Skip to content

Commit

Permalink
Merge pull request #113 from pelias/street-slop
Browse files Browse the repository at this point in the history
feat(fallback queries): Support slop parameter on street queries
  • Loading branch information
orangejulius committed Oct 3, 2019
2 parents 629307c + fa81aa2 commit 671404e
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 10 deletions.
8 changes: 4 additions & 4 deletions layout/AddressesUsingIdsQuery.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ function createAddressShould(vs) {
_name: 'fallback.address',
must: [
match_phrase('address_parts.number', vs.var('input:housenumber')),
match_phrase('address_parts.street', vs.var('input:street'))
match_phrase('address_parts.street', vs.var('input:street'), { slop: vs.var('address:street:slop') })
],
filter: {
term: {
Expand All @@ -32,7 +32,7 @@ function createUnitAndAddressShould(vs) {
must: [
match_phrase('address_parts.unit', vs.var('input:unit')),
match_phrase('address_parts.number', vs.var('input:housenumber')),
match_phrase('address_parts.street', vs.var('input:street'))
match_phrase('address_parts.street', vs.var('input:street'), { slop: vs.var('address:street:slop') })
],
filter: {
term: {
Expand All @@ -56,7 +56,7 @@ function createPostcodeAndAddressShould(vs) {
must: [
match_phrase('address_parts.zip', vs.var('input:postcode')),
match_phrase('address_parts.number', vs.var('input:housenumber')),
match_phrase('address_parts.street', vs.var('input:street'))
match_phrase('address_parts.street', vs.var('input:street'), { slop: vs.var('address:street:slop') })
],
filter: {
term: {
Expand All @@ -78,7 +78,7 @@ function createStreetShould(vs) {
bool: {
_name: 'fallback.street',
must: [
match_phrase('address_parts.street', vs.var('input:street'))
match_phrase('address_parts.street', vs.var('input:street'), { slop: vs.var('address:street:slop') })
],
filter: {
term: {
Expand Down
6 changes: 3 additions & 3 deletions layout/FallbackQuery.js
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ function addUnitAndHouseNumberAndStreet(vs) {
must: [
match_phrase('address_parts.unit', vs.var('input:unit')),
match_phrase('address_parts.number', vs.var('input:housenumber')),
match_phrase('address_parts.street', vs.var('input:street'))
match_phrase('address_parts.street', vs.var('input:street'), { slop: vs.var('address:street:slop') })
],
should: [],
filter: {
Expand Down Expand Up @@ -265,7 +265,7 @@ function addHouseNumberAndStreet(vs) {
_name: 'fallback.address',
must: [
match_phrase('address_parts.number', vs.var('input:housenumber')),
match_phrase('address_parts.street', vs.var('input:street'))
match_phrase('address_parts.street', vs.var('input:street'), { slop: vs.var('address:street:slop') })
],
should: [],
filter: {
Expand Down Expand Up @@ -297,7 +297,7 @@ function addStreet(vs) {
bool: {
_name: 'fallback.street',
must: [
match_phrase('address_parts.street', vs.var('input:street'))
match_phrase('address_parts.street', vs.var('input:street'), { slop: vs.var('address:street:slop') })
],
should: [],
filter: {
Expand Down
6 changes: 3 additions & 3 deletions layout/StructuredFallbackQuery.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ function addUnitAndHouseNumberAndStreet(vs) {
must: [
match_phrase('address_parts.unit', vs.var('input:unit')),
match_phrase('address_parts.number', vs.var('input:housenumber')),
match_phrase('address_parts.street', vs.var('input:street'))
match_phrase('address_parts.street', vs.var('input:street'), { slop: vs.var('address:street:slop') })
],
should: [],
filter: {
Expand Down Expand Up @@ -262,7 +262,7 @@ function addHouseNumberAndStreet(vs) {
_name: 'fallback.address',
must: [
match_phrase('address_parts.number', vs.var('input:housenumber')),
match_phrase('address_parts.street', vs.var('input:street'))
match_phrase('address_parts.street', vs.var('input:street'), { slop: vs.var('address:street:slop') })
],
should: [],
filter: {
Expand Down Expand Up @@ -294,7 +294,7 @@ function addStreet(vs) {
bool: {
_name: 'fallback.street',
must: [
match_phrase('address_parts.street', vs.var('input:street'))
match_phrase('address_parts.street', vs.var('input:street'), { slop: vs.var('address:street:slop') })
],
should: [],
filter: {
Expand Down
37 changes: 37 additions & 0 deletions test/layout/AddressesUsingIdsQuery.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,43 @@ module.exports.tests.base_render = (test, common) => {

});

test('street slop should be set in query', (t) => {
const query = new AddressesUsingIdsQuery();

const vs = new VariableStore();
vs.var('size', 'size value');
vs.var('track_scores', 'track_scores value');
vs.var('input:unit', 'unit value');
vs.var('input:housenumber', 'housenumber value');
vs.var('input:street', 'street value');
vs.var('address:street:slop', 3);

const actual = JSON.parse(JSON.stringify(query.render(vs)));

const expected_query_clause = {
match_phrase: {
'address_parts.street': {
query: 'street value',
slop: 3
}
}
};

// console.error(JSON.stringify(actual, null, 2));
// console.error(JSON.stringify(expected, null, 2));

// use this object as a starting point for finding all the individual street queries to check
const bool_query = actual.query.function_score.query.bool;

const street_fallback_query_clause = bool_query.should[0].bool.must[0];
const address_fallback_query_clause = bool_query.should[1].bool.must[2];

t.deepEquals(street_fallback_query_clause, expected_query_clause);
t.deepEquals(address_fallback_query_clause, expected_query_clause);
t.end();

});

test('VariableStore without housenumber should not add must for address', (t) => {
const query = new AddressesUsingIdsQuery();

Expand Down

0 comments on commit 671404e

Please sign in to comment.