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