mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-10 12:04:06 +00:00
base penalty for housenumber searches on similar address searches
This commit is contained in:
@@ -187,7 +187,7 @@ class SearchBuilder:
|
|||||||
dbf.FieldLookup('nameaddress_vector', addr_fulls, lookups.LookupAny)]
|
dbf.FieldLookup('nameaddress_vector', addr_fulls, lookups.LookupAny)]
|
||||||
|
|
||||||
sdata.housenumbers = dbf.WeightedStrings([], [])
|
sdata.housenumbers = dbf.WeightedStrings([], [])
|
||||||
yield dbs.PlaceSearch(0.05, sdata, expected_count, True)
|
yield dbs.PlaceSearch(0.0, sdata, expected_count, True)
|
||||||
|
|
||||||
def build_name_search(self, sdata: dbf.SearchData,
|
def build_name_search(self, sdata: dbf.SearchData,
|
||||||
name: qmod.TokenRange, address: List[qmod.TokenRange],
|
name: qmod.TokenRange, address: List[qmod.TokenRange],
|
||||||
|
|||||||
@@ -380,17 +380,23 @@ class _TokenSequence:
|
|||||||
if base.postcode and base.postcode.start == 0:
|
if base.postcode and base.postcode.start == 0:
|
||||||
self.penalty += 0.1
|
self.penalty += 0.1
|
||||||
|
|
||||||
|
min_penalty = self.penalty + 2.0
|
||||||
|
|
||||||
# Left-to-right reading of the address
|
# Left-to-right reading of the address
|
||||||
if self.direction != -1:
|
if self.direction != -1:
|
||||||
yield from self._get_assignments_address_forward(base, query)
|
for result in self._get_assignments_address_forward(base, query):
|
||||||
|
min_penalty = min(min_penalty, result.penalty)
|
||||||
|
yield result
|
||||||
|
|
||||||
# Right-to-left reading of the address
|
# Right-to-left reading of the address
|
||||||
if self.direction != 1:
|
if self.direction != 1:
|
||||||
yield from self._get_assignments_address_backward(base, query)
|
for result in self._get_assignments_address_backward(base, query):
|
||||||
|
min_penalty = min(min_penalty, result.penalty)
|
||||||
|
yield result
|
||||||
|
|
||||||
# variant for special housenumber searches
|
# variant for special housenumber searches
|
||||||
if base.housenumber and not base.qualifier:
|
if base.housenumber and not base.qualifier:
|
||||||
yield dataclasses.replace(base, penalty=self.penalty)
|
yield dataclasses.replace(base, penalty=min_penalty + 0.1)
|
||||||
|
|
||||||
|
|
||||||
def yield_token_assignments(query: qmod.QueryStruct) -> Iterator[TokenAssignment]:
|
def yield_token_assignments(query: qmod.QueryStruct) -> Iterator[TokenAssignment]:
|
||||||
|
|||||||
Reference in New Issue
Block a user