]> git.openstreetmap.org Git - nominatim.git/commitdiff
reduce influence of viewbox
authorSarah Hoffmann <lonvia@denofr.de>
Sat, 7 Oct 2023 15:30:01 +0000 (17:30 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Fri, 17 Nov 2023 09:02:04 +0000 (10:02 +0100)
Perfectly matching city names should still get priority.

nominatim/api/search/db_searches.py
test/python/api/search/test_search_places.py

index 1f7eb0093a6bc8245bbe3b422084e4bcd25d73fd..016d62e8b6cf2861c0f1212906ef9e1283dd69aa 100644 (file)
@@ -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:
index 8d17ec2da25b7a3d9448b42faa5daa24fcd74ad3..0a2044c2d72d7a8a1e44a9372b29190a6fc14b23 100644 (file)
@@ -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]