Boost responses by country code - #1650

Open
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country
Open

Boost responses by country code #1650
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country

Conversation

@Joxit

@JoxitJoxit commented May 4, 2023

Copy link
Copy Markdown
Member

👋 I did some awesome work for the Pelias project and would love for everyone to have a look at it and provide feedback.


Here's the reason for this change 🚀

closespelias/pelias#944


Here's what actually got changed 👏

I added the query paramater focus.country and focus.gid available only with autocomplete API. This will apply a defined boost set to 1.5 and not customizable. I did some tests and seems to be correct. I also tried 1.25 and 2


Here's how others can test the changes 👀

Some examples with focus.country

/v1/autocomplete?focus.country=fra&size=3&text=13 allée France addresses are in first position

// from
0) Alleestraße 13, Potsdam, BB, Allemagne
1) Alleestraße 13, Putbus, MV, Allemagne
2) Al Molo 13, Capriate San Gervasio, BG, Italie
//to 0) 13 Allée Louis 13, Maubeuge, France
1) 13 Allee De 13 Vents, Le Breuil-sur-Couze, France
2) 13 Allee Marguerite De Flandre(1-13), Prémesques, France

/v1/autocomplete?focus.country=usa&size=5&lang=en&text=paris USA documents before Jamaica, but Paris in France still in first position

// from
0) Métropole du Grand Paris, France
1) Paris, France
2) Saint Andrew, Jamaica
3) Saint Catherine, Jamaica
4) East Baton Rouge Parish, LA, USA
//to
0) Métropole du Grand Paris, France
1) Paris, France
2) East Baton Rouge Parish, LA, USA
3) Jefferson Parish, LA, USA
4) Orleans Parish, LA, USA

/v1/autocomplete?focus.country=gb&size=5&lang=en&text=melbourne same as Paris, Melbourne is still in first position, but now we see cities from UK

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
// to
0) Melbourne, VIC, Australia
1) Melbourne, England, United Kingdom
2) Melbourne, England, United Kingdom
3) Melbourne, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

Some examples with focus.gid

/v1/autocomplete?focus.gid=whosonfirst:localadmin:1377689997&size=5&text=Starbucks Focus on Aachen in Germany

// from
0) Starbucks, West Drayton, England, United Kingdom
1) Starbucks, Jenjarom, SGR, Malaysia
2) Starbucks, Aachen, NW, Germany
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA
//to
0) Starbucks, Aachen, NW, Germany
1) Starbucks, West Drayton, England, United Kingdom
2) Starbucks, Jenjarom, SGR, Malaysia
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA

/v1/autocomplete?focus.gid=whosonfirst:region:85688651&size=5&lang=en&text=melbourne just like focus.country this will change the order of result but not replace very high ranking (focus on Florida)

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
//to
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) West Melbourne, FL, USA
3) Melbourne Beach, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

I had to change a test in test/unit/helper/diffPlaces.js, IDK why 🤷

@Joxit

Joxit commented May 5, 2023

Copy link
Copy Markdown
MemberAuthor

I've just added the support of focus.gid and updated the PR description with new examples.

I thik this is good to go now 😄

@Joxit
Joxit marked this pull request as ready for review May 5, 2023 11:52
@Joxit
Joxit requested a review from missinglinkMay 5, 2023 11:52
@JoxitJoxit changed the title Joxit/feat/focus countryBoost responses by country code May 21, 2023
@Joxit

Copy link
Copy Markdown
MemberAuthor

Can I have feedback on this PR ? Is the API OK for you ?

@missinglink

Copy link
Copy Markdown
Member

Hi @Joxit, sorry I'm super busy this week (Berlin Buzzwords) and next week I'm off to Kosovo (FOSS4G).

I'll try and have a look over it while I'm away next week.

FYI I think the test issue with the Eszett is caused by tyxla/remove-accents#12

@Joxit

Copy link
Copy Markdown
MemberAuthor

Okay, thanks for your response 😄

@missinglink

Copy link
Copy Markdown
Member

Heya, I just got back from Kosovo and super exhausted, just wanted to send you a quick note that this is on my todo list.

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 765f0d9 to 82e5655CompareJuly 3, 2023 14:59
@Joxit

Joxit commented Jul 3, 2023

Copy link
Copy Markdown
MemberAuthor

Hi Peter, thank you for your update! I've sync the branch with master according to #1655

Rest well 😉

@missinglinkmissinglink left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry this took so long to review 🙇

Code looks great, nice and clean and easy to read 👍
One minor question about the ES query.

I'm happy to merge this.
Can we please add user-facing documentation for this API.

Comment threadquery/view/focus_multi_match.js Outdated
Comment on lines +10 to +15
return {
'function_score': {
'query': peliasQuery.view.leaf.multi_match(view_name)(vs),
'score_mode': 'multiply',
},
};

@missinglinkmissinglinkJul 17, 2023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question about this...

what's the purpose of wrapping the 'leaf' query in a 'function_score' here?
doesn't the 'function_score' query require an Array named 'functions', with at least one function?
the 'score_mode' property then effects how scoring is applied to the multiple 'functions'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess what I'm asking is, what's the difference between this and:

return peliasQuery.view.leaf.multi_match(view_name)(vs)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried different score_mode and wanted to be consistent with other functions, but you're right, since I'm using the defaults value, it's semantically the same, so I can return the leaf instead of the function_score 👍

@missinglink

missinglink commented Jul 17, 2023

Copy link
Copy Markdown
Member

These API params are available for /v1/autocomplete but not /v1/search, we've been moving toward having parity between the two APIs so I think it might be nice to have this also available for search?

I noticed that there are no new tests in test/unit/fixtures, could we add a couple fixtures please? they make understanding how the queries get generated easier and also help prevent someone else coming along and breaking this feature in the future 🙏

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 82e5655 to cb0f26bCompareJuly 25, 2023 10:18
@Joxit

Copy link
Copy Markdown
MemberAuthor

Hi Pete, thank you for your comments. I removed the function_score from the query and added tests + fixtures 🚀

For the /search endpoint and the two step search (first one with placeholder and second with ES) I don't know which behavior the API should have when placeholder is used.

Currently, the result for /v1/search?size=5&lang=en&text=paris is

Paris, France
Paris, TX, USA
Paris, ON, Canada
Paris, TN, USA
Swainsboro, GA, USA

If we add a focus.country=USA and say "every results in the USA goes first" (since we do not score results here) Paris, France will completely disappear because placeholder send 15 results in USA... 😕
This is a bit tricky IMO and I don't know the correct way to do it for now...
However when search uses ES, this should be ok 😄

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Boost responses by country code

2 participants

@Joxit@missinglink
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Boost responses by country code - #1650

Open
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country
Open

Boost responses by country code #1650
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country

Conversation

@Joxit

@JoxitJoxit commented May 4, 2023

Copy link
Copy Markdown
Member

👋 I did some awesome work for the Pelias project and would love for everyone to have a look at it and provide feedback.


Here's the reason for this change 🚀

closespelias/pelias#944


Here's what actually got changed 👏

I added the query paramater focus.country and focus.gid available only with autocomplete API. This will apply a defined boost set to 1.5 and not customizable. I did some tests and seems to be correct. I also tried 1.25 and 2


Here's how others can test the changes 👀

Some examples with focus.country

/v1/autocomplete?focus.country=fra&size=3&text=13 allée France addresses are in first position

// from
0) Alleestraße 13, Potsdam, BB, Allemagne
1) Alleestraße 13, Putbus, MV, Allemagne
2) Al Molo 13, Capriate San Gervasio, BG, Italie
//to 0) 13 Allée Louis 13, Maubeuge, France
1) 13 Allee De 13 Vents, Le Breuil-sur-Couze, France
2) 13 Allee Marguerite De Flandre(1-13), Prémesques, France

/v1/autocomplete?focus.country=usa&size=5&lang=en&text=paris USA documents before Jamaica, but Paris in France still in first position

// from
0) Métropole du Grand Paris, France
1) Paris, France
2) Saint Andrew, Jamaica
3) Saint Catherine, Jamaica
4) East Baton Rouge Parish, LA, USA
//to
0) Métropole du Grand Paris, France
1) Paris, France
2) East Baton Rouge Parish, LA, USA
3) Jefferson Parish, LA, USA
4) Orleans Parish, LA, USA

/v1/autocomplete?focus.country=gb&size=5&lang=en&text=melbourne same as Paris, Melbourne is still in first position, but now we see cities from UK

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
// to
0) Melbourne, VIC, Australia
1) Melbourne, England, United Kingdom
2) Melbourne, England, United Kingdom
3) Melbourne, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

Some examples with focus.gid

/v1/autocomplete?focus.gid=whosonfirst:localadmin:1377689997&size=5&text=Starbucks Focus on Aachen in Germany

// from
0) Starbucks, West Drayton, England, United Kingdom
1) Starbucks, Jenjarom, SGR, Malaysia
2) Starbucks, Aachen, NW, Germany
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA
//to
0) Starbucks, Aachen, NW, Germany
1) Starbucks, West Drayton, England, United Kingdom
2) Starbucks, Jenjarom, SGR, Malaysia
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA

/v1/autocomplete?focus.gid=whosonfirst:region:85688651&size=5&lang=en&text=melbourne just like focus.country this will change the order of result but not replace very high ranking (focus on Florida)

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
//to
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) West Melbourne, FL, USA
3) Melbourne Beach, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

I had to change a test in test/unit/helper/diffPlaces.js, IDK why 🤷

@Joxit

Joxit commented May 5, 2023

Copy link
Copy Markdown
MemberAuthor

I've just added the support of focus.gid and updated the PR description with new examples.

I thik this is good to go now 😄

@Joxit
Joxit marked this pull request as ready for review May 5, 2023 11:52
@Joxit
Joxit requested a review from missinglinkMay 5, 2023 11:52
@JoxitJoxit changed the title Joxit/feat/focus countryBoost responses by country code May 21, 2023
@Joxit

Copy link
Copy Markdown
MemberAuthor

Can I have feedback on this PR ? Is the API OK for you ?

@missinglink

Copy link
Copy Markdown
Member

Hi @Joxit, sorry I'm super busy this week (Berlin Buzzwords) and next week I'm off to Kosovo (FOSS4G).

I'll try and have a look over it while I'm away next week.

FYI I think the test issue with the Eszett is caused by tyxla/remove-accents#12

@Joxit

Copy link
Copy Markdown
MemberAuthor

Okay, thanks for your response 😄

@missinglink

Copy link
Copy Markdown
Member

Heya, I just got back from Kosovo and super exhausted, just wanted to send you a quick note that this is on my todo list.

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 765f0d9 to 82e5655CompareJuly 3, 2023 14:59
@Joxit

Joxit commented Jul 3, 2023

Copy link
Copy Markdown
MemberAuthor

Hi Peter, thank you for your update! I've sync the branch with master according to #1655

Rest well 😉

@missinglinkmissinglink left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry this took so long to review 🙇

Code looks great, nice and clean and easy to read 👍
One minor question about the ES query.

I'm happy to merge this.
Can we please add user-facing documentation for this API.

Comment threadquery/view/focus_multi_match.js Outdated
Comment on lines +10 to +15
return {
'function_score': {
'query': peliasQuery.view.leaf.multi_match(view_name)(vs),
'score_mode': 'multiply',
},
};

@missinglinkmissinglinkJul 17, 2023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question about this...

what's the purpose of wrapping the 'leaf' query in a 'function_score' here?
doesn't the 'function_score' query require an Array named 'functions', with at least one function?
the 'score_mode' property then effects how scoring is applied to the multiple 'functions'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess what I'm asking is, what's the difference between this and:

return peliasQuery.view.leaf.multi_match(view_name)(vs)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried different score_mode and wanted to be consistent with other functions, but you're right, since I'm using the defaults value, it's semantically the same, so I can return the leaf instead of the function_score 👍

@missinglink

missinglink commented Jul 17, 2023

Copy link
Copy Markdown
Member

These API params are available for /v1/autocomplete but not /v1/search, we've been moving toward having parity between the two APIs so I think it might be nice to have this also available for search?

I noticed that there are no new tests in test/unit/fixtures, could we add a couple fixtures please? they make understanding how the queries get generated easier and also help prevent someone else coming along and breaking this feature in the future 🙏

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 82e5655 to cb0f26bCompareJuly 25, 2023 10:18
@Joxit

Copy link
Copy Markdown
MemberAuthor

Hi Pete, thank you for your comments. I removed the function_score from the query and added tests + fixtures 🚀

For the /search endpoint and the two step search (first one with placeholder and second with ES) I don't know which behavior the API should have when placeholder is used.

Currently, the result for /v1/search?size=5&lang=en&text=paris is

Paris, France
Paris, TX, USA
Paris, ON, Canada
Paris, TN, USA
Swainsboro, GA, USA

If we add a focus.country=USA and say "every results in the USA goes first" (since we do not score results here) Paris, France will completely disappear because placeholder send 15 results in USA... 😕
This is a bit tricky IMO and I don't know the correct way to do it for now...
However when search uses ES, this should be ok 😄

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Boost responses by country code

2 participants

@Joxit@missinglink
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Boost responses by country code - #1650

Open
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country
Open

Boost responses by country code #1650
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country

Conversation

@Joxit

@JoxitJoxit commented May 4, 2023

Copy link
Copy Markdown
Member

👋 I did some awesome work for the Pelias project and would love for everyone to have a look at it and provide feedback.


Here's the reason for this change 🚀

closespelias/pelias#944


Here's what actually got changed 👏

I added the query paramater focus.country and focus.gid available only with autocomplete API. This will apply a defined boost set to 1.5 and not customizable. I did some tests and seems to be correct. I also tried 1.25 and 2


Here's how others can test the changes 👀

Some examples with focus.country

/v1/autocomplete?focus.country=fra&size=3&text=13 allée France addresses are in first position

// from
0) Alleestraße 13, Potsdam, BB, Allemagne
1) Alleestraße 13, Putbus, MV, Allemagne
2) Al Molo 13, Capriate San Gervasio, BG, Italie
//to 0) 13 Allée Louis 13, Maubeuge, France
1) 13 Allee De 13 Vents, Le Breuil-sur-Couze, France
2) 13 Allee Marguerite De Flandre(1-13), Prémesques, France

/v1/autocomplete?focus.country=usa&size=5&lang=en&text=paris USA documents before Jamaica, but Paris in France still in first position

// from
0) Métropole du Grand Paris, France
1) Paris, France
2) Saint Andrew, Jamaica
3) Saint Catherine, Jamaica
4) East Baton Rouge Parish, LA, USA
//to
0) Métropole du Grand Paris, France
1) Paris, France
2) East Baton Rouge Parish, LA, USA
3) Jefferson Parish, LA, USA
4) Orleans Parish, LA, USA

/v1/autocomplete?focus.country=gb&size=5&lang=en&text=melbourne same as Paris, Melbourne is still in first position, but now we see cities from UK

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
// to
0) Melbourne, VIC, Australia
1) Melbourne, England, United Kingdom
2) Melbourne, England, United Kingdom
3) Melbourne, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

Some examples with focus.gid

/v1/autocomplete?focus.gid=whosonfirst:localadmin:1377689997&size=5&text=Starbucks Focus on Aachen in Germany

// from
0) Starbucks, West Drayton, England, United Kingdom
1) Starbucks, Jenjarom, SGR, Malaysia
2) Starbucks, Aachen, NW, Germany
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA
//to
0) Starbucks, Aachen, NW, Germany
1) Starbucks, West Drayton, England, United Kingdom
2) Starbucks, Jenjarom, SGR, Malaysia
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA

/v1/autocomplete?focus.gid=whosonfirst:region:85688651&size=5&lang=en&text=melbourne just like focus.country this will change the order of result but not replace very high ranking (focus on Florida)

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
//to
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) West Melbourne, FL, USA
3) Melbourne Beach, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

I had to change a test in test/unit/helper/diffPlaces.js, IDK why 🤷

@Joxit

Joxit commented May 5, 2023

Copy link
Copy Markdown
MemberAuthor

I've just added the support of focus.gid and updated the PR description with new examples.

I thik this is good to go now 😄

@Joxit
Joxit marked this pull request as ready for review May 5, 2023 11:52
@Joxit
Joxit requested a review from missinglinkMay 5, 2023 11:52
@JoxitJoxit changed the title Joxit/feat/focus countryBoost responses by country code May 21, 2023
@Joxit

Copy link
Copy Markdown
MemberAuthor

Can I have feedback on this PR ? Is the API OK for you ?

@missinglink

Copy link
Copy Markdown
Member

Hi @Joxit, sorry I'm super busy this week (Berlin Buzzwords) and next week I'm off to Kosovo (FOSS4G).

I'll try and have a look over it while I'm away next week.

FYI I think the test issue with the Eszett is caused by tyxla/remove-accents#12

@Joxit

Copy link
Copy Markdown
MemberAuthor

Okay, thanks for your response 😄

@missinglink

Copy link
Copy Markdown
Member

Heya, I just got back from Kosovo and super exhausted, just wanted to send you a quick note that this is on my todo list.

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 765f0d9 to 82e5655CompareJuly 3, 2023 14:59
@Joxit

Joxit commented Jul 3, 2023

Copy link
Copy Markdown
MemberAuthor

Hi Peter, thank you for your update! I've sync the branch with master according to #1655

Rest well 😉

@missinglinkmissinglink left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry this took so long to review 🙇

Code looks great, nice and clean and easy to read 👍
One minor question about the ES query.

I'm happy to merge this.
Can we please add user-facing documentation for this API.

Comment threadquery/view/focus_multi_match.js Outdated
Comment on lines +10 to +15
return {
'function_score': {
'query': peliasQuery.view.leaf.multi_match(view_name)(vs),
'score_mode': 'multiply',
},
};

@missinglinkmissinglinkJul 17, 2023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question about this...

what's the purpose of wrapping the 'leaf' query in a 'function_score' here?
doesn't the 'function_score' query require an Array named 'functions', with at least one function?
the 'score_mode' property then effects how scoring is applied to the multiple 'functions'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess what I'm asking is, what's the difference between this and:

return peliasQuery.view.leaf.multi_match(view_name)(vs)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried different score_mode and wanted to be consistent with other functions, but you're right, since I'm using the defaults value, it's semantically the same, so I can return the leaf instead of the function_score 👍

@missinglink

missinglink commented Jul 17, 2023

Copy link
Copy Markdown
Member

These API params are available for /v1/autocomplete but not /v1/search, we've been moving toward having parity between the two APIs so I think it might be nice to have this also available for search?

I noticed that there are no new tests in test/unit/fixtures, could we add a couple fixtures please? they make understanding how the queries get generated easier and also help prevent someone else coming along and breaking this feature in the future 🙏

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 82e5655 to cb0f26bCompareJuly 25, 2023 10:18
@Joxit

Copy link
Copy Markdown
MemberAuthor

Hi Pete, thank you for your comments. I removed the function_score from the query and added tests + fixtures 🚀

For the /search endpoint and the two step search (first one with placeholder and second with ES) I don't know which behavior the API should have when placeholder is used.

Currently, the result for /v1/search?size=5&lang=en&text=paris is

Paris, France
Paris, TX, USA
Paris, ON, Canada
Paris, TN, USA
Swainsboro, GA, USA

If we add a focus.country=USA and say "every results in the USA goes first" (since we do not score results here) Paris, France will completely disappear because placeholder send 15 results in USA... 😕
This is a bit tricky IMO and I don't know the correct way to do it for now...
However when search uses ES, this should be ok 😄

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Boost responses by country code

2 participants

@Joxit@missinglink
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Boost responses by country code - #1650

Open
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country
Open

Boost responses by country code #1650
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country

Conversation

@Joxit

@JoxitJoxit commented May 4, 2023

Copy link
Copy Markdown
Member

👋 I did some awesome work for the Pelias project and would love for everyone to have a look at it and provide feedback.


Here's the reason for this change 🚀

closespelias/pelias#944


Here's what actually got changed 👏

I added the query paramater focus.country and focus.gid available only with autocomplete API. This will apply a defined boost set to 1.5 and not customizable. I did some tests and seems to be correct. I also tried 1.25 and 2


Here's how others can test the changes 👀

Some examples with focus.country

/v1/autocomplete?focus.country=fra&size=3&text=13 allée France addresses are in first position

// from
0) Alleestraße 13, Potsdam, BB, Allemagne
1) Alleestraße 13, Putbus, MV, Allemagne
2) Al Molo 13, Capriate San Gervasio, BG, Italie
//to 0) 13 Allée Louis 13, Maubeuge, France
1) 13 Allee De 13 Vents, Le Breuil-sur-Couze, France
2) 13 Allee Marguerite De Flandre(1-13), Prémesques, France

/v1/autocomplete?focus.country=usa&size=5&lang=en&text=paris USA documents before Jamaica, but Paris in France still in first position

// from
0) Métropole du Grand Paris, France
1) Paris, France
2) Saint Andrew, Jamaica
3) Saint Catherine, Jamaica
4) East Baton Rouge Parish, LA, USA
//to
0) Métropole du Grand Paris, France
1) Paris, France
2) East Baton Rouge Parish, LA, USA
3) Jefferson Parish, LA, USA
4) Orleans Parish, LA, USA

/v1/autocomplete?focus.country=gb&size=5&lang=en&text=melbourne same as Paris, Melbourne is still in first position, but now we see cities from UK

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
// to
0) Melbourne, VIC, Australia
1) Melbourne, England, United Kingdom
2) Melbourne, England, United Kingdom
3) Melbourne, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

Some examples with focus.gid

/v1/autocomplete?focus.gid=whosonfirst:localadmin:1377689997&size=5&text=Starbucks Focus on Aachen in Germany

// from
0) Starbucks, West Drayton, England, United Kingdom
1) Starbucks, Jenjarom, SGR, Malaysia
2) Starbucks, Aachen, NW, Germany
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA
//to
0) Starbucks, Aachen, NW, Germany
1) Starbucks, West Drayton, England, United Kingdom
2) Starbucks, Jenjarom, SGR, Malaysia
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA

/v1/autocomplete?focus.gid=whosonfirst:region:85688651&size=5&lang=en&text=melbourne just like focus.country this will change the order of result but not replace very high ranking (focus on Florida)

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
//to
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) West Melbourne, FL, USA
3) Melbourne Beach, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

I had to change a test in test/unit/helper/diffPlaces.js, IDK why 🤷

@Joxit

Joxit commented May 5, 2023

Copy link
Copy Markdown
MemberAuthor

I've just added the support of focus.gid and updated the PR description with new examples.

I thik this is good to go now 😄

@Joxit
Joxit marked this pull request as ready for review May 5, 2023 11:52
@Joxit
Joxit requested a review from missinglinkMay 5, 2023 11:52
@JoxitJoxit changed the title Joxit/feat/focus countryBoost responses by country code May 21, 2023
@Joxit

Copy link
Copy Markdown
MemberAuthor

Can I have feedback on this PR ? Is the API OK for you ?

@missinglink

Copy link
Copy Markdown
Member

Hi @Joxit, sorry I'm super busy this week (Berlin Buzzwords) and next week I'm off to Kosovo (FOSS4G).

I'll try and have a look over it while I'm away next week.

FYI I think the test issue with the Eszett is caused by tyxla/remove-accents#12

@Joxit

Copy link
Copy Markdown
MemberAuthor

Okay, thanks for your response 😄

@missinglink

Copy link
Copy Markdown
Member

Heya, I just got back from Kosovo and super exhausted, just wanted to send you a quick note that this is on my todo list.

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 765f0d9 to 82e5655CompareJuly 3, 2023 14:59
@Joxit

Joxit commented Jul 3, 2023

Copy link
Copy Markdown
MemberAuthor

Hi Peter, thank you for your update! I've sync the branch with master according to #1655

Rest well 😉

@missinglinkmissinglink left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry this took so long to review 🙇

Code looks great, nice and clean and easy to read 👍
One minor question about the ES query.

I'm happy to merge this.
Can we please add user-facing documentation for this API.

Comment threadquery/view/focus_multi_match.js Outdated
Comment on lines +10 to +15
return {
'function_score': {
'query': peliasQuery.view.leaf.multi_match(view_name)(vs),
'score_mode': 'multiply',
},
};

@missinglinkmissinglinkJul 17, 2023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question about this...

what's the purpose of wrapping the 'leaf' query in a 'function_score' here?
doesn't the 'function_score' query require an Array named 'functions', with at least one function?
the 'score_mode' property then effects how scoring is applied to the multiple 'functions'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess what I'm asking is, what's the difference between this and:

return peliasQuery.view.leaf.multi_match(view_name)(vs)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried different score_mode and wanted to be consistent with other functions, but you're right, since I'm using the defaults value, it's semantically the same, so I can return the leaf instead of the function_score 👍

@missinglink

missinglink commented Jul 17, 2023

Copy link
Copy Markdown
Member

These API params are available for /v1/autocomplete but not /v1/search, we've been moving toward having parity between the two APIs so I think it might be nice to have this also available for search?

I noticed that there are no new tests in test/unit/fixtures, could we add a couple fixtures please? they make understanding how the queries get generated easier and also help prevent someone else coming along and breaking this feature in the future 🙏

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 82e5655 to cb0f26bCompareJuly 25, 2023 10:18
@Joxit

Copy link
Copy Markdown
MemberAuthor

Hi Pete, thank you for your comments. I removed the function_score from the query and added tests + fixtures 🚀

For the /search endpoint and the two step search (first one with placeholder and second with ES) I don't know which behavior the API should have when placeholder is used.

Currently, the result for /v1/search?size=5&lang=en&text=paris is

Paris, France
Paris, TX, USA
Paris, ON, Canada
Paris, TN, USA
Swainsboro, GA, USA

If we add a focus.country=USA and say "every results in the USA goes first" (since we do not score results here) Paris, France will completely disappear because placeholder send 15 results in USA... 😕
This is a bit tricky IMO and I don't know the correct way to do it for now...
However when search uses ES, this should be ok 😄

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Boost responses by country code

2 participants

@Joxit@missinglink
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Boost responses by country code - #1650

Open
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country
Open

Boost responses by country code #1650
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country

Conversation

@Joxit

@JoxitJoxit commented May 4, 2023

Copy link
Copy Markdown
Member

👋 I did some awesome work for the Pelias project and would love for everyone to have a look at it and provide feedback.


Here's the reason for this change 🚀

closespelias/pelias#944


Here's what actually got changed 👏

I added the query paramater focus.country and focus.gid available only with autocomplete API. This will apply a defined boost set to 1.5 and not customizable. I did some tests and seems to be correct. I also tried 1.25 and 2


Here's how others can test the changes 👀

Some examples with focus.country

/v1/autocomplete?focus.country=fra&size=3&text=13 allée France addresses are in first position

// from
0) Alleestraße 13, Potsdam, BB, Allemagne
1) Alleestraße 13, Putbus, MV, Allemagne
2) Al Molo 13, Capriate San Gervasio, BG, Italie
//to 0) 13 Allée Louis 13, Maubeuge, France
1) 13 Allee De 13 Vents, Le Breuil-sur-Couze, France
2) 13 Allee Marguerite De Flandre(1-13), Prémesques, France

/v1/autocomplete?focus.country=usa&size=5&lang=en&text=paris USA documents before Jamaica, but Paris in France still in first position

// from
0) Métropole du Grand Paris, France
1) Paris, France
2) Saint Andrew, Jamaica
3) Saint Catherine, Jamaica
4) East Baton Rouge Parish, LA, USA
//to
0) Métropole du Grand Paris, France
1) Paris, France
2) East Baton Rouge Parish, LA, USA
3) Jefferson Parish, LA, USA
4) Orleans Parish, LA, USA

/v1/autocomplete?focus.country=gb&size=5&lang=en&text=melbourne same as Paris, Melbourne is still in first position, but now we see cities from UK

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
// to
0) Melbourne, VIC, Australia
1) Melbourne, England, United Kingdom
2) Melbourne, England, United Kingdom
3) Melbourne, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

Some examples with focus.gid

/v1/autocomplete?focus.gid=whosonfirst:localadmin:1377689997&size=5&text=Starbucks Focus on Aachen in Germany

// from
0) Starbucks, West Drayton, England, United Kingdom
1) Starbucks, Jenjarom, SGR, Malaysia
2) Starbucks, Aachen, NW, Germany
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA
//to
0) Starbucks, Aachen, NW, Germany
1) Starbucks, West Drayton, England, United Kingdom
2) Starbucks, Jenjarom, SGR, Malaysia
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA

/v1/autocomplete?focus.gid=whosonfirst:region:85688651&size=5&lang=en&text=melbourne just like focus.country this will change the order of result but not replace very high ranking (focus on Florida)

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
//to
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) West Melbourne, FL, USA
3) Melbourne Beach, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

I had to change a test in test/unit/helper/diffPlaces.js, IDK why 🤷

@Joxit

Joxit commented May 5, 2023

Copy link
Copy Markdown
MemberAuthor

I've just added the support of focus.gid and updated the PR description with new examples.

I thik this is good to go now 😄

@Joxit
Joxit marked this pull request as ready for review May 5, 2023 11:52
@Joxit
Joxit requested a review from missinglinkMay 5, 2023 11:52
@JoxitJoxit changed the title Joxit/feat/focus countryBoost responses by country code May 21, 2023
@Joxit

Copy link
Copy Markdown
MemberAuthor

Can I have feedback on this PR ? Is the API OK for you ?

@missinglink

Copy link
Copy Markdown
Member

Hi @Joxit, sorry I'm super busy this week (Berlin Buzzwords) and next week I'm off to Kosovo (FOSS4G).

I'll try and have a look over it while I'm away next week.

FYI I think the test issue with the Eszett is caused by tyxla/remove-accents#12

@Joxit

Copy link
Copy Markdown
MemberAuthor

Okay, thanks for your response 😄

@missinglink

Copy link
Copy Markdown
Member

Heya, I just got back from Kosovo and super exhausted, just wanted to send you a quick note that this is on my todo list.

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 765f0d9 to 82e5655CompareJuly 3, 2023 14:59
@Joxit

Joxit commented Jul 3, 2023

Copy link
Copy Markdown
MemberAuthor

Hi Peter, thank you for your update! I've sync the branch with master according to #1655

Rest well 😉

@missinglinkmissinglink left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry this took so long to review 🙇

Code looks great, nice and clean and easy to read 👍
One minor question about the ES query.

I'm happy to merge this.
Can we please add user-facing documentation for this API.

Comment threadquery/view/focus_multi_match.js Outdated
Comment on lines +10 to +15
return {
'function_score': {
'query': peliasQuery.view.leaf.multi_match(view_name)(vs),
'score_mode': 'multiply',
},
};

@missinglinkmissinglinkJul 17, 2023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question about this...

what's the purpose of wrapping the 'leaf' query in a 'function_score' here?
doesn't the 'function_score' query require an Array named 'functions', with at least one function?
the 'score_mode' property then effects how scoring is applied to the multiple 'functions'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess what I'm asking is, what's the difference between this and:

return peliasQuery.view.leaf.multi_match(view_name)(vs)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried different score_mode and wanted to be consistent with other functions, but you're right, since I'm using the defaults value, it's semantically the same, so I can return the leaf instead of the function_score 👍

@missinglink

missinglink commented Jul 17, 2023

Copy link
Copy Markdown
Member

These API params are available for /v1/autocomplete but not /v1/search, we've been moving toward having parity between the two APIs so I think it might be nice to have this also available for search?

I noticed that there are no new tests in test/unit/fixtures, could we add a couple fixtures please? they make understanding how the queries get generated easier and also help prevent someone else coming along and breaking this feature in the future 🙏

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 82e5655 to cb0f26bCompareJuly 25, 2023 10:18
@Joxit

Copy link
Copy Markdown
MemberAuthor

Hi Pete, thank you for your comments. I removed the function_score from the query and added tests + fixtures 🚀

For the /search endpoint and the two step search (first one with placeholder and second with ES) I don't know which behavior the API should have when placeholder is used.

Currently, the result for /v1/search?size=5&lang=en&text=paris is

Paris, France
Paris, TX, USA
Paris, ON, Canada
Paris, TN, USA
Swainsboro, GA, USA

If we add a focus.country=USA and say "every results in the USA goes first" (since we do not score results here) Paris, France will completely disappear because placeholder send 15 results in USA... 😕
This is a bit tricky IMO and I don't know the correct way to do it for now...
However when search uses ES, this should be ok 😄

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Boost responses by country code

2 participants

@Joxit@missinglink
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Boost responses by country code - #1650

Open
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country
Open

Boost responses by country code #1650
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country

Conversation

@Joxit

@JoxitJoxit commented May 4, 2023

Copy link
Copy Markdown
Member

👋 I did some awesome work for the Pelias project and would love for everyone to have a look at it and provide feedback.


Here's the reason for this change 🚀

closespelias/pelias#944


Here's what actually got changed 👏

I added the query paramater focus.country and focus.gid available only with autocomplete API. This will apply a defined boost set to 1.5 and not customizable. I did some tests and seems to be correct. I also tried 1.25 and 2


Here's how others can test the changes 👀

Some examples with focus.country

/v1/autocomplete?focus.country=fra&size=3&text=13 allée France addresses are in first position

// from
0) Alleestraße 13, Potsdam, BB, Allemagne
1) Alleestraße 13, Putbus, MV, Allemagne
2) Al Molo 13, Capriate San Gervasio, BG, Italie
//to 0) 13 Allée Louis 13, Maubeuge, France
1) 13 Allee De 13 Vents, Le Breuil-sur-Couze, France
2) 13 Allee Marguerite De Flandre(1-13), Prémesques, France

/v1/autocomplete?focus.country=usa&size=5&lang=en&text=paris USA documents before Jamaica, but Paris in France still in first position

// from
0) Métropole du Grand Paris, France
1) Paris, France
2) Saint Andrew, Jamaica
3) Saint Catherine, Jamaica
4) East Baton Rouge Parish, LA, USA
//to
0) Métropole du Grand Paris, France
1) Paris, France
2) East Baton Rouge Parish, LA, USA
3) Jefferson Parish, LA, USA
4) Orleans Parish, LA, USA

/v1/autocomplete?focus.country=gb&size=5&lang=en&text=melbourne same as Paris, Melbourne is still in first position, but now we see cities from UK

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
// to
0) Melbourne, VIC, Australia
1) Melbourne, England, United Kingdom
2) Melbourne, England, United Kingdom
3) Melbourne, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

Some examples with focus.gid

/v1/autocomplete?focus.gid=whosonfirst:localadmin:1377689997&size=5&text=Starbucks Focus on Aachen in Germany

// from
0) Starbucks, West Drayton, England, United Kingdom
1) Starbucks, Jenjarom, SGR, Malaysia
2) Starbucks, Aachen, NW, Germany
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA
//to
0) Starbucks, Aachen, NW, Germany
1) Starbucks, West Drayton, England, United Kingdom
2) Starbucks, Jenjarom, SGR, Malaysia
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA

/v1/autocomplete?focus.gid=whosonfirst:region:85688651&size=5&lang=en&text=melbourne just like focus.country this will change the order of result but not replace very high ranking (focus on Florida)

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
//to
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) West Melbourne, FL, USA
3) Melbourne Beach, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

I had to change a test in test/unit/helper/diffPlaces.js, IDK why 🤷

@Joxit

Joxit commented May 5, 2023

Copy link
Copy Markdown
MemberAuthor

I've just added the support of focus.gid and updated the PR description with new examples.

I thik this is good to go now 😄

@Joxit
Joxit marked this pull request as ready for review May 5, 2023 11:52
@Joxit
Joxit requested a review from missinglinkMay 5, 2023 11:52
@JoxitJoxit changed the title Joxit/feat/focus countryBoost responses by country code May 21, 2023
@Joxit

Copy link
Copy Markdown
MemberAuthor

Can I have feedback on this PR ? Is the API OK for you ?

@missinglink

Copy link
Copy Markdown
Member

Hi @Joxit, sorry I'm super busy this week (Berlin Buzzwords) and next week I'm off to Kosovo (FOSS4G).

I'll try and have a look over it while I'm away next week.

FYI I think the test issue with the Eszett is caused by tyxla/remove-accents#12

@Joxit

Copy link
Copy Markdown
MemberAuthor

Okay, thanks for your response 😄

@missinglink

Copy link
Copy Markdown
Member

Heya, I just got back from Kosovo and super exhausted, just wanted to send you a quick note that this is on my todo list.

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 765f0d9 to 82e5655CompareJuly 3, 2023 14:59
@Joxit

Joxit commented Jul 3, 2023

Copy link
Copy Markdown
MemberAuthor

Hi Peter, thank you for your update! I've sync the branch with master according to #1655

Rest well 😉

@missinglinkmissinglink left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry this took so long to review 🙇

Code looks great, nice and clean and easy to read 👍
One minor question about the ES query.

I'm happy to merge this.
Can we please add user-facing documentation for this API.

Comment threadquery/view/focus_multi_match.js Outdated
Comment on lines +10 to +15
return {
'function_score': {
'query': peliasQuery.view.leaf.multi_match(view_name)(vs),
'score_mode': 'multiply',
},
};

@missinglinkmissinglinkJul 17, 2023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question about this...

what's the purpose of wrapping the 'leaf' query in a 'function_score' here?
doesn't the 'function_score' query require an Array named 'functions', with at least one function?
the 'score_mode' property then effects how scoring is applied to the multiple 'functions'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess what I'm asking is, what's the difference between this and:

return peliasQuery.view.leaf.multi_match(view_name)(vs)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried different score_mode and wanted to be consistent with other functions, but you're right, since I'm using the defaults value, it's semantically the same, so I can return the leaf instead of the function_score 👍

@missinglink

missinglink commented Jul 17, 2023

Copy link
Copy Markdown
Member

These API params are available for /v1/autocomplete but not /v1/search, we've been moving toward having parity between the two APIs so I think it might be nice to have this also available for search?

I noticed that there are no new tests in test/unit/fixtures, could we add a couple fixtures please? they make understanding how the queries get generated easier and also help prevent someone else coming along and breaking this feature in the future 🙏

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 82e5655 to cb0f26bCompareJuly 25, 2023 10:18
@Joxit

Copy link
Copy Markdown
MemberAuthor

Hi Pete, thank you for your comments. I removed the function_score from the query and added tests + fixtures 🚀

For the /search endpoint and the two step search (first one with placeholder and second with ES) I don't know which behavior the API should have when placeholder is used.

Currently, the result for /v1/search?size=5&lang=en&text=paris is

Paris, France
Paris, TX, USA
Paris, ON, Canada
Paris, TN, USA
Swainsboro, GA, USA

If we add a focus.country=USA and say "every results in the USA goes first" (since we do not score results here) Paris, France will completely disappear because placeholder send 15 results in USA... 😕
This is a bit tricky IMO and I don't know the correct way to do it for now...
However when search uses ES, this should be ok 😄

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Boost responses by country code

2 participants

@Joxit@missinglink
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Boost responses by country code - #1650

Open
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country
Open

Boost responses by country code #1650
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country

Conversation

@Joxit

@JoxitJoxit commented May 4, 2023

Copy link
Copy Markdown
Member

👋 I did some awesome work for the Pelias project and would love for everyone to have a look at it and provide feedback.


Here's the reason for this change 🚀

closespelias/pelias#944


Here's what actually got changed 👏

I added the query paramater focus.country and focus.gid available only with autocomplete API. This will apply a defined boost set to 1.5 and not customizable. I did some tests and seems to be correct. I also tried 1.25 and 2


Here's how others can test the changes 👀

Some examples with focus.country

/v1/autocomplete?focus.country=fra&size=3&text=13 allée France addresses are in first position

// from
0) Alleestraße 13, Potsdam, BB, Allemagne
1) Alleestraße 13, Putbus, MV, Allemagne
2) Al Molo 13, Capriate San Gervasio, BG, Italie
//to 0) 13 Allée Louis 13, Maubeuge, France
1) 13 Allee De 13 Vents, Le Breuil-sur-Couze, France
2) 13 Allee Marguerite De Flandre(1-13), Prémesques, France

/v1/autocomplete?focus.country=usa&size=5&lang=en&text=paris USA documents before Jamaica, but Paris in France still in first position

// from
0) Métropole du Grand Paris, France
1) Paris, France
2) Saint Andrew, Jamaica
3) Saint Catherine, Jamaica
4) East Baton Rouge Parish, LA, USA
//to
0) Métropole du Grand Paris, France
1) Paris, France
2) East Baton Rouge Parish, LA, USA
3) Jefferson Parish, LA, USA
4) Orleans Parish, LA, USA

/v1/autocomplete?focus.country=gb&size=5&lang=en&text=melbourne same as Paris, Melbourne is still in first position, but now we see cities from UK

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
// to
0) Melbourne, VIC, Australia
1) Melbourne, England, United Kingdom
2) Melbourne, England, United Kingdom
3) Melbourne, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

Some examples with focus.gid

/v1/autocomplete?focus.gid=whosonfirst:localadmin:1377689997&size=5&text=Starbucks Focus on Aachen in Germany

// from
0) Starbucks, West Drayton, England, United Kingdom
1) Starbucks, Jenjarom, SGR, Malaysia
2) Starbucks, Aachen, NW, Germany
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA
//to
0) Starbucks, Aachen, NW, Germany
1) Starbucks, West Drayton, England, United Kingdom
2) Starbucks, Jenjarom, SGR, Malaysia
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA

/v1/autocomplete?focus.gid=whosonfirst:region:85688651&size=5&lang=en&text=melbourne just like focus.country this will change the order of result but not replace very high ranking (focus on Florida)

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
//to
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) West Melbourne, FL, USA
3) Melbourne Beach, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

I had to change a test in test/unit/helper/diffPlaces.js, IDK why 🤷

@Joxit

Joxit commented May 5, 2023

Copy link
Copy Markdown
MemberAuthor

I've just added the support of focus.gid and updated the PR description with new examples.

I thik this is good to go now 😄

@Joxit
Joxit marked this pull request as ready for review May 5, 2023 11:52
@Joxit
Joxit requested a review from missinglinkMay 5, 2023 11:52
@JoxitJoxit changed the title Joxit/feat/focus countryBoost responses by country code May 21, 2023
@Joxit

Copy link
Copy Markdown
MemberAuthor

Can I have feedback on this PR ? Is the API OK for you ?

@missinglink

Copy link
Copy Markdown
Member

Hi @Joxit, sorry I'm super busy this week (Berlin Buzzwords) and next week I'm off to Kosovo (FOSS4G).

I'll try and have a look over it while I'm away next week.

FYI I think the test issue with the Eszett is caused by tyxla/remove-accents#12

@Joxit

Copy link
Copy Markdown
MemberAuthor

Okay, thanks for your response 😄

@missinglink

Copy link
Copy Markdown
Member

Heya, I just got back from Kosovo and super exhausted, just wanted to send you a quick note that this is on my todo list.

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 765f0d9 to 82e5655CompareJuly 3, 2023 14:59
@Joxit

Joxit commented Jul 3, 2023

Copy link
Copy Markdown
MemberAuthor

Hi Peter, thank you for your update! I've sync the branch with master according to #1655

Rest well 😉

@missinglinkmissinglink left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry this took so long to review 🙇

Code looks great, nice and clean and easy to read 👍
One minor question about the ES query.

I'm happy to merge this.
Can we please add user-facing documentation for this API.

Comment threadquery/view/focus_multi_match.js Outdated
Comment on lines +10 to +15
return {
'function_score': {
'query': peliasQuery.view.leaf.multi_match(view_name)(vs),
'score_mode': 'multiply',
},
};

@missinglinkmissinglinkJul 17, 2023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question about this...

what's the purpose of wrapping the 'leaf' query in a 'function_score' here?
doesn't the 'function_score' query require an Array named 'functions', with at least one function?
the 'score_mode' property then effects how scoring is applied to the multiple 'functions'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess what I'm asking is, what's the difference between this and:

return peliasQuery.view.leaf.multi_match(view_name)(vs)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried different score_mode and wanted to be consistent with other functions, but you're right, since I'm using the defaults value, it's semantically the same, so I can return the leaf instead of the function_score 👍

@missinglink

missinglink commented Jul 17, 2023

Copy link
Copy Markdown
Member

These API params are available for /v1/autocomplete but not /v1/search, we've been moving toward having parity between the two APIs so I think it might be nice to have this also available for search?

I noticed that there are no new tests in test/unit/fixtures, could we add a couple fixtures please? they make understanding how the queries get generated easier and also help prevent someone else coming along and breaking this feature in the future 🙏

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 82e5655 to cb0f26bCompareJuly 25, 2023 10:18
@Joxit

Copy link
Copy Markdown
MemberAuthor

Hi Pete, thank you for your comments. I removed the function_score from the query and added tests + fixtures 🚀

For the /search endpoint and the two step search (first one with placeholder and second with ES) I don't know which behavior the API should have when placeholder is used.

Currently, the result for /v1/search?size=5&lang=en&text=paris is

Paris, France
Paris, TX, USA
Paris, ON, Canada
Paris, TN, USA
Swainsboro, GA, USA

If we add a focus.country=USA and say "every results in the USA goes first" (since we do not score results here) Paris, France will completely disappear because placeholder send 15 results in USA... 😕
This is a bit tricky IMO and I don't know the correct way to do it for now...
However when search uses ES, this should be ok 😄

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Boost responses by country code

2 participants

@Joxit@missinglink
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Boost responses by country code - #1650

Open
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country
Open

Boost responses by country code #1650
Joxit wants to merge 4 commits into
masterfrom
joxit/feat/focus-country

Conversation

@Joxit

@JoxitJoxit commented May 4, 2023

Copy link
Copy Markdown
Member

👋 I did some awesome work for the Pelias project and would love for everyone to have a look at it and provide feedback.


Here's the reason for this change 🚀

closespelias/pelias#944


Here's what actually got changed 👏

I added the query paramater focus.country and focus.gid available only with autocomplete API. This will apply a defined boost set to 1.5 and not customizable. I did some tests and seems to be correct. I also tried 1.25 and 2


Here's how others can test the changes 👀

Some examples with focus.country

/v1/autocomplete?focus.country=fra&size=3&text=13 allée France addresses are in first position

// from
0) Alleestraße 13, Potsdam, BB, Allemagne
1) Alleestraße 13, Putbus, MV, Allemagne
2) Al Molo 13, Capriate San Gervasio, BG, Italie
//to 0) 13 Allée Louis 13, Maubeuge, France
1) 13 Allee De 13 Vents, Le Breuil-sur-Couze, France
2) 13 Allee Marguerite De Flandre(1-13), Prémesques, France

/v1/autocomplete?focus.country=usa&size=5&lang=en&text=paris USA documents before Jamaica, but Paris in France still in first position

// from
0) Métropole du Grand Paris, France
1) Paris, France
2) Saint Andrew, Jamaica
3) Saint Catherine, Jamaica
4) East Baton Rouge Parish, LA, USA
//to
0) Métropole du Grand Paris, France
1) Paris, France
2) East Baton Rouge Parish, LA, USA
3) Jefferson Parish, LA, USA
4) Orleans Parish, LA, USA

/v1/autocomplete?focus.country=gb&size=5&lang=en&text=melbourne same as Paris, Melbourne is still in first position, but now we see cities from UK

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
// to
0) Melbourne, VIC, Australia
1) Melbourne, England, United Kingdom
2) Melbourne, England, United Kingdom
3) Melbourne, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

Some examples with focus.gid

/v1/autocomplete?focus.gid=whosonfirst:localadmin:1377689997&size=5&text=Starbucks Focus on Aachen in Germany

// from
0) Starbucks, West Drayton, England, United Kingdom
1) Starbucks, Jenjarom, SGR, Malaysia
2) Starbucks, Aachen, NW, Germany
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA
//to
0) Starbucks, Aachen, NW, Germany
1) Starbucks, West Drayton, England, United Kingdom
2) Starbucks, Jenjarom, SGR, Malaysia
3) Starbucks, Shah Alam, SGR, Malaysia
4) Starbucks, Seattle, WA, USA

/v1/autocomplete?focus.gid=whosonfirst:region:85688651&size=5&lang=en&text=melbourne just like focus.country this will change the order of result but not replace very high ranking (focus on Florida)

// from
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) Melbourne City Centre, Melbourne, VIC, Australia
3) West Melbourne, FL, USA
4) Port Melbourne, VIC, Australia
//to
0) Melbourne, VIC, Australia
1) Melbourne, FL, USA
2) West Melbourne, FL, USA
3) Melbourne Beach, FL, USA
4) Melbourne City Centre, Melbourne, VIC, Australia

I had to change a test in test/unit/helper/diffPlaces.js, IDK why 🤷

@Joxit

Joxit commented May 5, 2023

Copy link
Copy Markdown
MemberAuthor

I've just added the support of focus.gid and updated the PR description with new examples.

I thik this is good to go now 😄

@Joxit
Joxit marked this pull request as ready for review May 5, 2023 11:52
@Joxit
Joxit requested a review from missinglinkMay 5, 2023 11:52
@JoxitJoxit changed the title Joxit/feat/focus countryBoost responses by country code May 21, 2023
@Joxit

Copy link
Copy Markdown
MemberAuthor

Can I have feedback on this PR ? Is the API OK for you ?

@missinglink

Copy link
Copy Markdown
Member

Hi @Joxit, sorry I'm super busy this week (Berlin Buzzwords) and next week I'm off to Kosovo (FOSS4G).

I'll try and have a look over it while I'm away next week.

FYI I think the test issue with the Eszett is caused by tyxla/remove-accents#12

@Joxit

Copy link
Copy Markdown
MemberAuthor

Okay, thanks for your response 😄

@missinglink

Copy link
Copy Markdown
Member

Heya, I just got back from Kosovo and super exhausted, just wanted to send you a quick note that this is on my todo list.

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 765f0d9 to 82e5655CompareJuly 3, 2023 14:59
@Joxit

Joxit commented Jul 3, 2023

Copy link
Copy Markdown
MemberAuthor

Hi Peter, thank you for your update! I've sync the branch with master according to #1655

Rest well 😉

@missinglinkmissinglink left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry this took so long to review 🙇

Code looks great, nice and clean and easy to read 👍
One minor question about the ES query.

I'm happy to merge this.
Can we please add user-facing documentation for this API.

Comment threadquery/view/focus_multi_match.js Outdated
Comment on lines +10 to +15
return {
'function_score': {
'query': peliasQuery.view.leaf.multi_match(view_name)(vs),
'score_mode': 'multiply',
},
};

@missinglinkmissinglinkJul 17, 2023

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question about this...

what's the purpose of wrapping the 'leaf' query in a 'function_score' here?
doesn't the 'function_score' query require an Array named 'functions', with at least one function?
the 'score_mode' property then effects how scoring is applied to the multiple 'functions'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess what I'm asking is, what's the difference between this and:

return peliasQuery.view.leaf.multi_match(view_name)(vs)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried different score_mode and wanted to be consistent with other functions, but you're right, since I'm using the defaults value, it's semantically the same, so I can return the leaf instead of the function_score 👍

@missinglink

missinglink commented Jul 17, 2023

Copy link
Copy Markdown
Member

These API params are available for /v1/autocomplete but not /v1/search, we've been moving toward having parity between the two APIs so I think it might be nice to have this also available for search?

I noticed that there are no new tests in test/unit/fixtures, could we add a couple fixtures please? they make understanding how the queries get generated easier and also help prevent someone else coming along and breaking this feature in the future 🙏

@Joxit
Joxitforce-pushed the joxit/feat/focus-country branch from 82e5655 to cb0f26bCompareJuly 25, 2023 10:18
@Joxit

Copy link
Copy Markdown
MemberAuthor

Hi Pete, thank you for your comments. I removed the function_score from the query and added tests + fixtures 🚀

For the /search endpoint and the two step search (first one with placeholder and second with ES) I don't know which behavior the API should have when placeholder is used.

Currently, the result for /v1/search?size=5&lang=en&text=paris is

Paris, France
Paris, TX, USA
Paris, ON, Canada
Paris, TN, USA
Swainsboro, GA, USA

If we add a focus.country=USA and say "every results in the USA goes first" (since we do not score results here) Paris, France will completely disappear because placeholder send 15 results in USA... 😕
This is a bit tricky IMO and I don't know the correct way to do it for now...
However when search uses ES, this should be ok 😄

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Boost responses by country code

2 participants

@Joxit@missinglink