From b62dbd1f921b7e50b034ae8fd9349fb6b32af658 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 eb4da549..e07f7906 100644 --- a/nominatim/api/search/db_searches.py +++ b/nominatim/api/search/db_searches.py @@ -518,8 +518,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: @@ -640,8 +640,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 d280eeee..3853439f 100644 --- a/test/python/api/search/test_search_places.py +++ b/test/python/api/search/test_search_places.py @@ -159,7 +159,7 @@ class TestNameOnlySearches: @pytest.mark.parametrize('wcount,rids', [(2, [100, 101]), (20000, [100])]) def test_prefer_viewbox(self, apiobj, viewbox, wcount, rids): 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] -- 2.39.5