]> git.openstreetmap.org Git - nominatim.git/commitdiff
always bind addr:place to place instead of street
authorSarah Hoffmann <lonvia@denofr.de>
Thu, 3 Sep 2020 19:42:00 +0000 (21:42 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Mon, 21 Sep 2020 08:15:14 +0000 (10:15 +0200)
If an addr:place is given but no addr:street tag, then bind
the rank 30 object always to a <=25 object, even when there
is none found with the same name.

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

index 9c2777a900ae9842aadfe2fda88c617de5a4a371..d6a8f76228b0c77d201dcf291ed141dffb428aa8 100644 (file)
@@ -92,7 +92,16 @@ BEGIN
     END IF;
 
     IF fallback THEN
-      IF ST_Area(bbox) < 0.005 THEN
+      IF addr_street is null and addr_place is not null THEN
+        -- The address is attached to a place we don't know. Find the
+        -- nearest place instead.
+        FOR location IN
+          SELECT place_id FROM getNearFeatures(poi_partition, bbox, 26, '{}'::INTEGER[])
+            ORDER BY rank_address DESC, isguess asc, distance LIMIT 1
+        LOOP
+          parent_place_id := location.place_id;
+        END LOOP;
+      ELSEIF ST_Area(bbox) < 0.005 THEN
         -- for smaller features get the nearest road
         SELECT getNearestRoadPlaceId(poi_partition, bbox) INTO parent_place_id;
         --DEBUG: RAISE WARNING 'Checked for nearest way (%)', parent_place_id;
index 7974fe521c1ad0c1f7349e0de9748832a888e29b..62d65cef571d9bb0eafad56ae8ab70225401605a 100644 (file)
@@ -374,7 +374,7 @@ Feature: Parenting of objects
          | W1     | N4              | 3 |
          | N1     | W2              | None |
          | N2     | W3              | 4 |
-         | N3     | W2              | None |
+         | N3     | N4              | None |
 
     Scenario: POIs parent a road if they are attached to it
         Given the scene points-on-roads
index 5514e7de29d8e7c7ea923305860eae38b20bb125..14cf3769a1e43f274cdc00ce81c55c6d2c7a6a5b 100644 (file)
@@ -62,24 +62,32 @@ Feature: Creation of search terms
          | osm | class   | type        | housenr | addr+place | geometry |
          | N1  | place   | house       | 23      | Walltown   | :p-N1 |
         And the places
-         | osm | class   | type        | name+name   | geometry |
-         | W1  | highway | residential | Rose Street | :w-north |
+         | osm | class   | type        | name+name    | geometry |
+         | W1  | highway | residential | Rose Street  | :w-north |
+         | N2  | place   | city        | Strange Town | :p-N1 |
         When importing
         Then search_name contains
          | object | name_vector | nameaddress_vector |
          | N1     | #23         | Walltown |
-        When searching for "23 Rose Street, Walltown"
-        Then exactly 0 results are returned
+        When searching for "23 Rose Street"
+        Then exactly 1 results are returned
+        And results contain
+         | osm_type | osm_id |
+         | W        | 1 |
+        When searching for "23 Walltown"
+        Then results contain
+         | osm_type | osm_id |
+         | N        | 1 |
 
-    # XXX Need to change parenting of POis without addr:street and with addr:place
     Scenario: Unnamed POIs doesn't inherit parent name when addr:place is present only in parent address
         Given the scene roads-with-pois
         And the places
          | osm | class   | type        | housenr | addr+place | geometry |
          | N1  | place   | house       | 23      | Walltown   | :p-N1 |
         And the places
-         | osm | class   | type        | name+name   | addr+city | geometry |
-         | W1  | highway | residential | Rose Street | Walltown  | :w-north |
+         | osm | class   | type        | name+name    | addr+city | geometry |
+         | W1  | highway | residential | Rose Street  | Walltown  | :w-north |
+         | N2  | place   | suburb      | Strange Town | Walltown  | :p-N1 |
         When importing
         Then search_name contains
          | object | name_vector | nameaddress_vector |
@@ -89,6 +97,11 @@ Feature: Creation of search terms
         And results contain
          | osm_type | osm_id |
          | W        | 1 |
+        When searching for "23  Walltown"
+        Then exactly 1 result is returned
+        And results contain
+         | osm_type | osm_id |
+         | N        | 1 |
 
     Scenario: Unnamed POIs does inherit parent name when unknown addr:place and addr:street is present
         Given the scene roads-with-pois
@@ -147,17 +160,19 @@ Feature: Creation of search terms
          | osm | class   | type        | name+name  | addr+place | geometry |
          | N1  | place   | house       | Green Moss | Walltown  | :p-N1 |
         And the places
-         | osm | class   | type        | name+name   | geometry |
-         | W1  | highway | residential | Rose Street | :w-north |
+         | osm | class   | type        | name+name    | geometry |
+         | W1  | highway | residential | Rose Street  | :w-north |
+         | N2  | place   | suburb      | Strange Town | :p-N1 |
         When importing
         Then search_name contains
          | object | name_vector | nameaddress_vector |
          | N1     | #Green Moss | Walltown |
         When searching for "Green Moss, Rose Street, Walltown"
-        Then exactly 1 result is returned
-        And results contain
+        Then exactly 0 result is returned
+        When searching for "Green Moss, Walltown"
+        Then results contain
          | osm_type | osm_id |
-         | W        | 1 |
+         | N        | 1 |
 
     Scenario: Named POIs inherit address from parent
         Given the scene roads-with-pois
index 50a647adcb5782057409ebe9ba1be7dd26d85bb3..99199de4fe24469450570090e50cc344eabbac0a 100644 (file)
@@ -9,8 +9,8 @@ Scenario: POI inside building inherits addr:street change
          | N2  | shop    | bakery     | :n-edge-NS |
          | N3  | shop    | supermarket| :n-edge-WE |
         And the places
-         | osm | class    | type | addr_place | housenr | geometry |
-         | W1  | building | yes  | nowhere    | 3       | :w-building |
+         | osm | class    | type | street  | housenr | geometry |
+         | W1  | building | yes  | nowhere | 3       | :w-building |
         And the places
          | osm | class    | type        | name | geometry |
          | W2  | highway  | primary     | bar  | :w-WE |
@@ -34,5 +34,3 @@ Scenario: POI inside building inherits addr:street change
          | N1     | W3              | 3 |
          | N2     | W3              | 3 |
          | N3     | W3              | 3 |
-
-