mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-14 10:27:57 +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
|
||||
|
||||
|
||||
@@ -111,6 +111,28 @@ Feature: Parenting of objects
|
||||
| N3 | W2 |
|
||||
| N4 | W1 |
|
||||
|
||||
Scenario: addr:street tag parents to appropriately named street with abbreviation
|
||||
Given the scene roads-with-pois
|
||||
And the places
|
||||
| osm | class | type | street| geometry |
|
||||
| N1 | place | house | south st | :p-N1 |
|
||||
| N2 | place | house | north st | :p-N2 |
|
||||
| N3 | place | house | south st | :p-S1 |
|
||||
| N4 | place | house | north st | :p-S2 |
|
||||
And the places
|
||||
| osm | class | type | name+name:en | geometry |
|
||||
| W1 | highway | residential | north street | :w-north |
|
||||
| W2 | highway | residential | south street | :w-south |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
| N1 | W2 |
|
||||
| N2 | W1 |
|
||||
| N3 | W2 |
|
||||
| N4 | W1 |
|
||||
|
||||
|
||||
|
||||
Scenario: addr:street tag parents to next named street
|
||||
Given the scene roads-with-pois
|
||||
And the places
|
||||
|
||||
Reference in New Issue
Block a user