]> git.openstreetmap.org Git - nominatim.git/commitdiff
prioritize country searches when penaly is equal
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 7 Jan 2024 10:11:11 +0000 (11:11 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 7 Jan 2024 14:28:37 +0000 (15:28 +0100)
nominatim/api/search/db_searches.py
nominatim/api/search/geocoder.py

index 254d2ca6703e8f20c4056a694b8a15c4353e841a..68447f6a7429e3c40eea224a433985d4c5a58631 100644 (file)
@@ -245,6 +245,7 @@ async def _get_tiger(conn: SearchConnection, place_ids: List[int],
 class AbstractSearch(abc.ABC):
     """ Encapuslation of a single lookup in the database.
     """
+    SEARCH_PRIO: int = 2
 
     def __init__(self, penalty: float) -> None:
         self.penalty = penalty
@@ -448,6 +449,8 @@ class PoiSearch(AbstractSearch):
 class CountrySearch(AbstractSearch):
     """ Search for a country name or country code.
     """
+    SEARCH_PRIO = 0
+
     def __init__(self, sdata: SearchData) -> None:
         super().__init__(sdata.penalty)
         self.countries = sdata.countries
@@ -604,6 +607,8 @@ class PostcodeSearch(AbstractSearch):
 class PlaceSearch(AbstractSearch):
     """ Generic search for an address or named place.
     """
+    SEARCH_PRIO = 1
+
     def __init__(self, extra_penalty: float, sdata: SearchData, expected_count: int) -> None:
         super().__init__(sdata.penalty + extra_penalty)
         self.countries = sdata.countries
index bb3c6a1c86d1a8ae2271dd8426adb2518108a55e..6db7c9cefcfa98b4269249a23a1bdcee44c55c4a 100644 (file)
@@ -64,7 +64,7 @@ class ForwardGeocoder:
                     log().table_dump('Searches for assignment',
                                      _dump_searches(searches, query, num_searches))
                 num_searches = len(searches)
-            searches.sort(key=lambda s: s.penalty)
+            searches.sort(key=lambda s: (s.penalty, s.SEARCH_PRIO))
 
         return query, searches