]> git.openstreetmap.org Git - nominatim.git/commitdiff
make sure that addr:* tags can always be searched for
authorSarah Hoffmann <lonvia@denofr.de>
Wed, 19 Aug 2020 09:37:21 +0000 (11:37 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Wed, 19 Aug 2020 09:44:10 +0000 (11:44 +0200)
Always add contents of addr:* tags into address part of the search
table, even when there is no corresponding other name. This keeps
search tolerant to the kind of tagging where parts show up in the
address that have no corresponding object in the database or where
it is only an unaddressable object.

sql/functions/normalization.sql
test/bdd/db/import/search_name.feature

index 66d0214add4f7c1fe9a169bc2231120c94de22d1..1a8bbd84412d8fdb09d3f8291c6b13983afde61e 100644 (file)
@@ -207,16 +207,22 @@ CREATE OR REPLACE FUNCTION addr_ids_from_name(lookup_word TEXT)
   AS $$
 DECLARE
   lookup_token TEXT;
+  id INTEGER;
   return_word_id INTEGER[];
 BEGIN
   lookup_token := make_standard_name(lookup_word);
   SELECT array_agg(word_id) FROM word
     WHERE word_token = lookup_token and class is null and type is null
     INTO return_word_id;
+  IF return_word_id IS NULL THEN
+    id := nextval('seq_word');
+    INSERT INTO word VALUES (id, lookup_token, null, null, null, null, 0);
+    return_word_id = ARRAY[id];
+  END IF;
   RETURN return_word_id;
 END;
 $$
-LANGUAGE plpgsql STABLE;
+LANGUAGE plpgsql;
 
 
 -- Normalize a string and look up its name ids (full words).
index c4e5bbce0ac642d4422454ab56008dd66ac9bbec..8006045fb8082c7f09b72fba9e7644781336a09a 100644 (file)
@@ -39,13 +39,13 @@ Feature: Creation of search terms
          | object | nameaddress_vector |
          | W1     | bonn, new york, smalltown |
 
-    Scenario: A known addr:* tag is not added if the name is unknown
+    Scenario: A known addr:* tag is added even if the name is unknown
         Given the scene roads-with-pois
         And the places
          | osm | class   | type        | name | addr+city | geometry |
          | W1  | highway | residential | Road | Nandu     | :w-north |
         When importing
-        Then search_name contains not
+        Then search_name contains
          | object | nameaddress_vector |
          | W1     | nandu |