From: Sarah Hoffmann Date: Thu, 20 Feb 2025 13:36:26 +0000 (+0100) Subject: Merge remote-tracking branch 'upstream/master' X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/1a403bef4313d72c30dfafbb5d2c6c1a170eca99?hp=472b1f59f1af4f97430aac8926a1b5faee7fdc71 Merge remote-tracking branch 'upstream/master' --- diff --git a/src/nominatim_api/search/db_search_builder.py b/src/nominatim_api/search/db_search_builder.py index dbf84a0c..411e8878 100644 --- a/src/nominatim_api/search/db_search_builder.py +++ b/src/nominatim_api/search/db_search_builder.py @@ -148,7 +148,6 @@ class SearchBuilder: [t.token for r in address for t in self.query.get_partials_list(r)], lookups.Restrict)] - penalty += 0.2 yield dbs.PostcodeSearch(penalty, sdata) def build_housenumber_search(self, sdata: dbf.SearchData, hnrs: List[Token], diff --git a/src/nominatim_api/search/db_searches.py b/src/nominatim_api/search/db_searches.py index 3a4c826f..8e37c748 100644 --- a/src/nominatim_api/search/db_searches.py +++ b/src/nominatim_api/search/db_searches.py @@ -581,9 +581,13 @@ class PostcodeSearch(AbstractSearch): .where((tsearch.c.name_vector + tsearch.c.nameaddress_vector) .contains(sa.type_coerce(self.lookups[0].tokens, IntArray))) + # Do NOT add rerank penalties based on the address terms. + # The standard rerank penalty only checks the address vector + # while terms may appear in name and address vector. This would + # lead to overly high penalties. + # We assume that a postcode is precise enough to not require + # additional full name matches. - for ranking in self.rankings: - penalty += ranking.sql_penalty(conn.t.search_name) penalty += sa.case(*((t.c.postcode == v, p) for v, p in self.postcodes), else_=1.0)