]> git.openstreetmap.org Git - nominatim.git/commitdiff
Remove linkees from search_name
authorSarah Hoffmann <lonvia@denofr.de>
Wed, 4 Mar 2020 10:35:01 +0000 (11:35 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Wed, 4 Mar 2020 10:36:39 +0000 (11:36 +0100)
Fixes #722

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

index 779301c56cc87f2fafe762d5dd3a281385745f68..d123e3624baab1c0bdaeacb0f30383d732035d12 100644 (file)
@@ -723,6 +723,7 @@ BEGIN
                   and ( relation_members[i+1] != 'side_stream' or NEW.name->'name' = name->'name')
                 LOOP
                   UPDATE placex SET linked_place_id = NEW.place_id WHERE place_id = linked_node_id;
                   and ( relation_members[i+1] != 'side_stream' or NEW.name->'name' = name->'name')
                 LOOP
                   UPDATE placex SET linked_place_id = NEW.place_id WHERE place_id = linked_node_id;
+                  DELETE FROM search_name WHERE place_id = linked_node_id;
                 END LOOP;
               END IF;
           END LOOP;
                 END LOOP;
               END IF;
           END LOOP;
@@ -864,6 +865,8 @@ BEGIN
     -- mark the linked place (excludes from search results)
     UPDATE placex set linked_place_id = NEW.place_id
       WHERE place_id = location.place_id;
     -- mark the linked place (excludes from search results)
     UPDATE placex set linked_place_id = NEW.place_id
       WHERE place_id = location.place_id;
+    -- ensure that those places are not found anymore
+    DELETE FROM search_name WHERE place_id = location.place_id;
 
     SELECT wikipedia, importance
       FROM compute_importance(location.extratags, NEW.country_code,
 
     SELECT wikipedia, importance
       FROM compute_importance(location.extratags, NEW.country_code,
index af31d46abdc713b1710f66d662439d40012526c9..c4e5bbce0ac642d4422454ab56008dd66ac9bbec 100644 (file)
@@ -77,3 +77,36 @@ Feature: Creation of search terms
          | object | nameaddress_vector |
          | W1     | bonn, new york, smalltown |
 
          | object | nameaddress_vector |
          | W1     | bonn, new york, smalltown |
 
+    Scenario: a linked place does not show up in search name
+        Given the named places
+         | osm  | class    | type           | admin | geometry |
+         | R13  | boundary | administrative | 9     | poly-area:0.01 |
+        And the named places
+         | osm  | class    | type           | geometry |
+         | N2   | place    | city           | 0.1 0.1 |
+        And the relations
+         | id | members       | tags+type |
+         | 13 | N2:label      | boundary |
+        When importing
+        Then placex contains
+         | object | linked_place_id |
+         | N2     | R13             |
+        And search_name has no entry for N2
+
+    Scenario: a linked waterway does not show up in search name
+        Given the scene split-road
+        And the places
+         | osm | class    | type  | name  | geometry |
+         | W1  | waterway | river | Rhein | :w-2 |
+         | W2  | waterway | river | Rhein | :w-3 |
+         | R13 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
+        And the relations
+         | id | members            | tags+type |
+         | 13 | W1,W2:main_stream  | waterway |
+        When importing
+        Then placex contains
+         | object | linked_place_id |
+         | W1     | R13 |
+         | W2     | R13 |
+        And search_name has no entry for W1
+        And search_name has no entry for W2