From e022d41a01331c6cda14ed45e765cb256a2741d4 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Sat, 7 Oct 2023 17:30:01 +0200 Subject: [PATCH] reduce influence of viewbox Perfectly matching city names should still get priority. --- nominatim/api/search/db_searches.py | 8 ++++---- test/python/api/search/test_search_places.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nominatim/api/search/db_searches.py b/nominatim/api/search/db_searches.py index 1f7eb009..016d62e8 100644 --- a/nominatim/api/search/db_searches.py +++ b/nominatim/api/search/db_searches.py @@ -512,8 +512,8 @@ class PostcodeSearch(AbstractSearch): sql = sql.where(t.c.geometry.intersects(VIEWBOX_PARAM)) else: penalty += sa.case((t.c.geometry.intersects(VIEWBOX_PARAM), 0.0), - (t.c.geometry.intersects(VIEWBOX2_PARAM), 1.0), - else_=2.0) + (t.c.geometry.intersects(VIEWBOX2_PARAM), 0.5), + else_=1.0) if details.near is not None: if details.near_radius is not None: @@ -634,8 +634,8 @@ class PlaceSearch(AbstractSearch): sql = sql.where(tsearch.c.centroid.ST_Intersects_no_index(VIEWBOX2_PARAM)) else: penalty += sa.case((t.c.geometry.intersects(VIEWBOX_PARAM), 0.0), - (t.c.geometry.intersects(VIEWBOX2_PARAM), 1.0), - else_=2.0) + (t.c.geometry.intersects(VIEWBOX2_PARAM), 0.5), + else_=1.0) if details.near is not None: if details.near_radius is not None: diff --git a/test/python/api/search/test_search_places.py b/test/python/api/search/test_search_places.py index 8d17ec2d..0a2044c2 100644 --- a/test/python/api/search/test_search_places.py +++ b/test/python/api/search/test_search_places.py @@ -133,7 +133,7 @@ class TestNameOnlySearches: @pytest.mark.parametrize('viewbox', ['5.0,4.0,6.0,5.0', '5.7,4.0,6.0,5.0']) def test_prefer_viewbox(self, apiobj, viewbox): lookup = FieldLookup('name_vector', [1, 2], 'lookup_all') - ranking = FieldRanking('name_vector', 0.9, [RankedTokens(0.0, [21])]) + ranking = FieldRanking('name_vector', 0.2, [RankedTokens(0.0, [21])]) results = run_search(apiobj, 0.1, [lookup], [ranking]) assert [r.place_id for r in results] == [101, 100]