Merge pull request #3655 from lonvia/remove-name-ranking-in-postcode-search

Tweak penalties for postcode searches
This commit is contained in:
Sarah Hoffmann
2025-02-20 14:32:43 +01:00
committed by GitHub
2 changed files with 6 additions and 3 deletions

View File

@@ -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],

View File

@@ -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)