mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-25 18:48:15 +00:00
Merge pull request #3655 from lonvia/remove-name-ranking-in-postcode-search
Tweak penalties for postcode searches
This commit is contained in:
@@ -148,7 +148,6 @@ class SearchBuilder:
|
|||||||
[t.token for r in address
|
[t.token for r in address
|
||||||
for t in self.query.get_partials_list(r)],
|
for t in self.query.get_partials_list(r)],
|
||||||
lookups.Restrict)]
|
lookups.Restrict)]
|
||||||
penalty += 0.2
|
|
||||||
yield dbs.PostcodeSearch(penalty, sdata)
|
yield dbs.PostcodeSearch(penalty, sdata)
|
||||||
|
|
||||||
def build_housenumber_search(self, sdata: dbf.SearchData, hnrs: List[Token],
|
def build_housenumber_search(self, sdata: dbf.SearchData, hnrs: List[Token],
|
||||||
|
|||||||
@@ -581,9 +581,13 @@ class PostcodeSearch(AbstractSearch):
|
|||||||
.where((tsearch.c.name_vector + tsearch.c.nameaddress_vector)
|
.where((tsearch.c.name_vector + tsearch.c.nameaddress_vector)
|
||||||
.contains(sa.type_coerce(self.lookups[0].tokens,
|
.contains(sa.type_coerce(self.lookups[0].tokens,
|
||||||
IntArray)))
|
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),
|
penalty += sa.case(*((t.c.postcode == v, p) for v, p in self.postcodes),
|
||||||
else_=1.0)
|
else_=1.0)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user