]> git.openstreetmap.org Git - nominatim.git/commit
icu tokenizer: switch to matching against partial names
authorSarah Hoffmann <lonvia@denofr.de>
Thu, 23 Sep 2021 14:57:24 +0000 (16:57 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Mon, 27 Sep 2021 09:36:19 +0000 (11:36 +0200)
commitbd7c7ddad04627d2bf402ebf20d6a8413a331320
treee5d050c3b9fcab4ce6ee516272251a484db9c604
parentc6fdcf9b0d0fca42d0d5f69f0fc469259e17ca24
icu tokenizer: switch to matching against partial names

When matching address parts from addr:* tags against place names,
the address names where so far converted to full names and compared
those to the place names. This can become problematic with the new
ICU tokenizer once we introduce creation of different variants
depending on the place name context. It wouldn't be clear which
variant to produce to get a match, so we would have to create all of
them. To work around this issue, switch to using the partial terms
for matching. This introduces a larger fuzziness between matches but
that shouldn't be a problem because matching is always geographically
restricted.

The search terms created for address parts have a different problem:
they are already created before we even know if they are going to be
used. This can lead to spurious entries in the word table, which slows
down searching. This problem can also be circumvented by using only
partial terms for the search terms. In terms of searching that means
that the address terms would not get the full-word boost, but given
that the case where an address part does not exist as an OSM object
should be the exception, this is likely acceptable.
lib-sql/tokenizer/icu_tokenizer.sql
nominatim/tokenizer/icu_tokenizer.py
test/bdd/db/import/search_name.feature