mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-11 21:34:06 +00:00
correctly match abbreviated addr:street
This only works when addr:street is abbreviated and the street name isn't. It does not work the other way around.
This commit is contained in:
@@ -416,9 +416,7 @@ class LegacyICUNameAnalyzer(AbstractAnalyzer):
|
||||
elif item.kind in ('housenumber', 'streetnumber', 'conscriptionnumber'):
|
||||
hnrs.append(item.name)
|
||||
elif item.kind == 'street':
|
||||
token = self._retrieve_full_token(item.name)
|
||||
if token:
|
||||
streets.append(token)
|
||||
streets.extend(self._retrieve_full_tokens(item.name))
|
||||
elif item.kind == 'place':
|
||||
if not item.suffix:
|
||||
token_info.add_place(self._compute_partial_tokens(item.name))
|
||||
@@ -465,25 +463,20 @@ class LegacyICUNameAnalyzer(AbstractAnalyzer):
|
||||
return tokens
|
||||
|
||||
|
||||
def _retrieve_full_token(self, name):
|
||||
def _retrieve_full_tokens(self, name):
|
||||
""" Get the full name token for the given name, if it exists.
|
||||
The name is only retrived for the standard analyser.
|
||||
"""
|
||||
norm_name = self._normalized(name)
|
||||
norm_name = self._search_normalized(name)
|
||||
|
||||
# return cached if possible
|
||||
if norm_name in self._cache.fulls:
|
||||
return self._cache.fulls[norm_name]
|
||||
|
||||
# otherwise compute
|
||||
full, _ = self._cache.names.get(norm_name, (None, None))
|
||||
|
||||
if full is None:
|
||||
with self.conn.cursor() as cur:
|
||||
cur.execute("SELECT word_id FROM word WHERE word = %s and type = 'W' LIMIT 1",
|
||||
(norm_name, ))
|
||||
if cur.rowcount > 0:
|
||||
full = cur.fetchone()[0]
|
||||
with self.conn.cursor() as cur:
|
||||
cur.execute("SELECT word_id FROM word WHERE word_token = %s and type = 'W'",
|
||||
(norm_name, ))
|
||||
full = [row[0] for row in cur]
|
||||
|
||||
self._cache.fulls[norm_name] = full
|
||||
|
||||
|
||||
Reference in New Issue
Block a user