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:
Sarah Hoffmann
2021-12-08 21:58:43 +01:00
parent 5e792078b3
commit f9b56a8581
2 changed files with 29 additions and 14 deletions

View File

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