Browse Source

Merge pull request #153 from pelias/ngram

merge ngram
pull/154/head
Peter Johnson a.k.a. insertcoffee 10 years ago
parent
commit
930dee47d8
  1. 20
      app.js
  2. 21
      query/search.js
  3. 6
      test/ciao/suggest/nearby_nobias.coffee
  4. 44
      test/unit/query/search.js

20
app.js

@ -37,24 +37,18 @@ app.get( '/', controllers.index() );
// doc API
app.get( '/doc', sanitisers.doc.middleware, controllers.doc() );
// suggest API
app.get( '/suggest', sanitisers.suggest.middleware, controllers.suggest() );
app.get( '/suggest/nearby',
sanitisers.suggest.middleware,
controllers.suggest(undefined, undefined, require('./helper/queryMixer').suggest_nearby) );
app.get( '/suggest/coarse',
sanitisers.coarse.middleware,
controllers.suggest(undefined, undefined, require('./helper/queryMixer').coarse) );
// search API
// suggest APIs
app.get( '/suggest', sanitisers.search.middleware, controllers.search() );
app.get( '/suggest/nearby', sanitisers.suggest.middleware, controllers.search() );
app.get( '/suggest/coarse', sanitisers.coarse.middleware, controllers.search() );
// search APIs
app.get( '/search', sanitisers.search.middleware, controllers.search() );
app.get( '/search/coarse', sanitisers.coarse.middleware, controllers.search() );
// reverse API
app.get( '/reverse', sanitisers.reverse.middleware, controllers.search(undefined, require('./query/reverse')) );
// coarse API
app.get( '/search/coarse', sanitisers.coarse.middleware, controllers.search() );
/** ----------------------- error middleware ----------------------- **/
app.use( require('./middleware/404') );

21
query/search.js

@ -21,18 +21,19 @@ function generate( params ){
// add search condition to filtered query
query.query.filtered.query = {
'bool': {
'must': [{
'match': {
'name.default': params.input
}
'must': [{
'match': {
'name.default': params.input
}
]
}]
}
};
// should query contitions
query.query.filtered.query.bool.should = [];
if (params.input_admin) {
var admin_fields = ['admin0', 'admin1', 'admin1_abbr', 'admin2', 'alpha3'];
query.query.filtered.query.bool.should = [];
admin_fields.forEach(function(admin_field) {
var match = {};
@ -43,6 +44,14 @@ function generate( params ){
});
}
// add phrase matching query
// note: this is required for shingle/phrase matching
query.query.filtered.query.bool.should.push({
'match': {
'phrase.default': params.input
}
});
query.sort = query.sort.concat( sort( params ) );
return query;

6
test/ciao/suggest/nearby_nobias.coffee

@ -0,0 +1,6 @@
#> suggest without geo bias
path: '/suggest/nearby?input=a'
#? 400 bad request
response.statusCode.should.equal 400

44
test/unit/query/search.js

@ -76,12 +76,16 @@ var expected = {
'filtered': {
'query': {
'bool': {
'must': [{
'match': {
'name.default': 'test'
}
'must': [{
'match': {
'name.default': 'test'
}
}],
'should': [{
'match': {
'phrase.default': 'test'
}
]
}]
}
},
'filter': {
@ -154,12 +158,16 @@ module.exports.tests.query = function(test, common) {
'filtered': {
'query': {
'bool': {
'must': [{
'match': {
'name.default': 'test'
}
'must': [{
'match': {
'name.default': 'test'
}
}],
'should': [{
'match': {
'phrase.default': 'test'
}
]
}]
}
},
'filter': {
@ -190,12 +198,16 @@ module.exports.tests.query = function(test, common) {
'filtered': {
'query': {
'bool': {
'must': [{
'match': {
'name.default': 'test'
}
'must': [{
'match': {
'name.default': 'test'
}
}],
'should': [{
'match': {
'phrase.default': 'test'
}
]
}]
}
},
'filter': {
@ -215,7 +227,7 @@ module.exports.tests.query = function(test, common) {
}
]
}
}
}
}
},
'sort': [

Loading…
Cancel
Save