From 60a02315aef42f878bce69ac7d72e50ac8f9657c Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Wed, 20 May 2015 17:21:11 +0200 Subject: [PATCH 1/5] enable shingle matching --- query/search.js | 13 ++++++++++++- test/unit/query/search.js | 30 +++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/query/search.js b/query/search.js index e1cb33b0..ad9f11f9 100644 --- a/query/search.js +++ b/query/search.js @@ -30,9 +30,20 @@ function generate( params ){ } }; + // should query contitions + query.query.filtered.query.bool.should = []; + + // add shingles should query + // note: this is required for partial phrase matching + query.query.filtered.query.bool.should.push({ + 'multi_match': { + 'query': params.input, + 'fields': [ 'shingle.*' ] + } + }); + 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 = {}; diff --git a/test/unit/query/search.js b/test/unit/query/search.js index 83aec714..599db6f3 100644 --- a/test/unit/query/search.js +++ b/test/unit/query/search.js @@ -83,7 +83,15 @@ var expected = { 'fields': [ 'name.*' ] } } - ] + ], + 'should': [ + { + 'multi_match': { + 'query': 'test', + 'fields': [ 'shingle.*' ] + } + } + ] } }, 'filter': { @@ -163,7 +171,15 @@ module.exports.tests.query = function(test, common) { 'fields': [ 'name.*' ] } } - ] + ], + 'should': [ + { + 'multi_match': { + 'query': 'test', + 'fields': [ 'shingle.*' ] + } + } + ] } }, 'filter': { @@ -201,7 +217,15 @@ module.exports.tests.query = function(test, common) { 'fields': [ 'name.*' ] } } - ] + ], + 'should': [ + { + 'multi_match': { + 'query': 'test', + 'fields': [ 'shingle.*' ] + } + } + ] } }, 'filter': { From 4770f0660f76f10c7a5e7319eebf8e0a6b3d5e2b Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Wed, 20 May 2015 18:07:06 +0200 Subject: [PATCH 2/5] multi_match -> match --- query/search.js | 10 ++++------ test/unit/query/search.js | 30 ++++++++++++------------------ 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/query/search.js b/query/search.js index ad9f11f9..a13c156f 100644 --- a/query/search.js +++ b/query/search.js @@ -22,9 +22,8 @@ function generate( params ){ query.query.filtered.query = { 'bool': { 'must': [{ - 'multi_match': { - 'query': params.input, - 'fields': [ 'name.*' ] + 'match': { + 'name.default': params.input } }] } @@ -36,9 +35,8 @@ function generate( params ){ // add shingles should query // note: this is required for partial phrase matching query.query.filtered.query.bool.should.push({ - 'multi_match': { - 'query': params.input, - 'fields': [ 'shingle.*' ] + 'match': { + 'shingle.default': params.input } }); diff --git a/test/unit/query/search.js b/test/unit/query/search.js index 599db6f3..9a09d29e 100644 --- a/test/unit/query/search.js +++ b/test/unit/query/search.js @@ -78,17 +78,15 @@ var expected = { 'bool': { 'must': [ { - 'multi_match': { - 'query': 'test', - 'fields': [ 'name.*' ] + 'match': { + 'name.default': 'test' } } ], 'should': [ { - 'multi_match': { - 'query': 'test', - 'fields': [ 'shingle.*' ] + 'match': { + 'shingle.default': 'test' } } ] @@ -166,17 +164,15 @@ module.exports.tests.query = function(test, common) { 'bool': { 'must': [ { - 'multi_match': { - 'query': 'test', - 'fields': [ 'name.*' ] + 'match': { + 'name.default': 'test' } } ], 'should': [ { - 'multi_match': { - 'query': 'test', - 'fields': [ 'shingle.*' ] + 'match': { + 'shingle.default': 'test' } } ] @@ -212,17 +208,15 @@ module.exports.tests.query = function(test, common) { 'bool': { 'must': [ { - 'multi_match': { - 'query': 'test', - 'fields': [ 'name.*' ] + 'match': { + 'name.default': 'test' } } ], 'should': [ { - 'multi_match': { - 'query': 'test', - 'fields': [ 'shingle.*' ] + 'match': { + 'shingle.default': 'test' } } ] From efec90139ed323423bbeba6ccb36250862a2adbe Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Thu, 21 May 2015 12:41:05 +0200 Subject: [PATCH 3/5] alias endpoints --- app.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app.js b/app.js index e0a8591f..bc4e9a93 100644 --- a/app.js +++ b/app.js @@ -38,22 +38,27 @@ app.get( '/', controllers.index() ); 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) ); +// 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 app.get( '/search', sanitisers.search.middleware, controllers.search() ); +app.get( '/suggest', sanitisers.search.middleware, controllers.search() ); +app.get( '/suggest/nearby', sanitisers.search.middleware, controllers.search() ); +// @todo: /suggest/nearby should enforce lat/lon required, check other endpoints for validation // 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() ); +app.get( '/suggest/coarse', sanitisers.coarse.middleware, controllers.search() ); + /** ----------------------- error middleware ----------------------- **/ From 21d658531415712760fcd24a59e7f6a711f497ea Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Mon, 6 Jul 2015 17:20:36 +0200 Subject: [PATCH 4/5] update sanitizer middleware --- app.js | 25 +++++++------------------ test/ciao/suggest/nearby_nobias.coffee | 6 ++++++ 2 files changed, 13 insertions(+), 18 deletions(-) create mode 100644 test/ciao/suggest/nearby_nobias.coffee diff --git a/app.js b/app.js index bc4e9a93..869628de 100644 --- a/app.js +++ b/app.js @@ -37,28 +37,17 @@ 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 -app.get( '/search', sanitisers.search.middleware, controllers.search() ); +// suggest APIs app.get( '/suggest', sanitisers.search.middleware, controllers.search() ); -app.get( '/suggest/nearby', sanitisers.search.middleware, controllers.search() ); -// @todo: /suggest/nearby should enforce lat/lon required, check other endpoints for validation - -// reverse API -app.get( '/reverse', sanitisers.reverse.middleware, controllers.search(undefined, require('./query/reverse')) ); +app.get( '/suggest/nearby', sanitisers.suggest.middleware, controllers.search() ); +app.get( '/suggest/coarse', sanitisers.coarse.middleware, controllers.search() ); -// coarse API +// search APIs +app.get( '/search', sanitisers.search.middleware, controllers.search() ); app.get( '/search/coarse', sanitisers.coarse.middleware, controllers.search() ); -app.get( '/suggest/coarse', sanitisers.coarse.middleware, controllers.search() ); +// reverse API +app.get( '/reverse', sanitisers.reverse.middleware, controllers.search(undefined, require('./query/reverse')) ); /** ----------------------- error middleware ----------------------- **/ diff --git a/test/ciao/suggest/nearby_nobias.coffee b/test/ciao/suggest/nearby_nobias.coffee new file mode 100644 index 00000000..df0b7930 --- /dev/null +++ b/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 \ No newline at end of file From 812aa9ffc254aaab6acbf3f11e86f083cf0886b4 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Mon, 6 Jul 2015 19:02:54 +0200 Subject: [PATCH 5/5] 2.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4c4c3411..fcbfdae7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pelias-api", "author": "mapzen", - "version": "1.2.1", + "version": "2.0.0", "description": "Pelias API", "homepage": "https://github.com/pelias/api", "license": "MIT",