]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Wed, 23 Sep 2020 13:26:36 +0000 (15:26 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Wed, 23 Sep 2020 13:26:36 +0000 (15:26 +0200)
sql/functions/address_lookup.sql
sql/functions/placex_triggers.sql
test/bdd/db/import/search_name.feature

index 196fb434868f69aacf87bdd7b895f80e11c458db..53bc1ae3aa34563124a578ddddcff80cf8354fb6 100644 (file)
@@ -101,6 +101,7 @@ DECLARE
   postcode_isexact BOOL;
   searchclass TEXT;
   searchtype TEXT;
+  search_unlisted_place TEXT;
   countryname HSTORE;
 BEGIN
   -- The place ein question might not have a direct entry in place_addressline.
@@ -155,11 +156,13 @@ BEGIN
   IF for_place_id IS NULL THEN
     SELECT parent_place_id, country_code, housenumber, rank_search,
            postcode, address is not null and address ? 'postcode',
-           name, class, type
+           name, class, type,
+           address -> '_unlisted_place' as unlisted_place
       FROM placex
       WHERE place_id = in_place_id and rank_search > 27
       INTO for_place_id, searchcountrycode, searchhousenumber, searchrankaddress,
-           searchpostcode, postcode_isexact, searchhousename, searchclass, searchtype;
+           searchpostcode, postcode_isexact, searchhousename, searchclass,
+           searchtype, search_unlisted_place;
   END IF;
 
   -- If for_place_id is still NULL at this point then the object has its own
@@ -279,6 +282,11 @@ BEGIN
     RETURN NEXT location;
   END IF;
 
+  IF search_unlisted_place is not null THEN
+    RETURN NEXT ROW(null, null, null, hstore('name', search_unlisted_place),
+                    'place', 'locality', null, null, true, true, 26, 0)::addressline;
+  END IF;
+
   IF searchpostcode IS NOT NULL THEN
     location := ROW(null, null, null, hstore('ref', searchpostcode), 'place',
                     'postcode', null, null, false, true, 5, 0)::addressline;
index 2bc7efad826e9ab8461c05a4debd7c0aca8d523d..d39699f795b18a7abadf1aaee0fa6f431a665b2b 100644 (file)
@@ -575,6 +575,7 @@ BEGIN
   -- update not necessary for osmline, cause linked_place_id does not exist
 
   NEW.extratags := NEW.extratags - 'linked_place'::TEXT;
+  NEW.address := NEW.address - '_unlisted_place'::TEXT;
 
   IF NEW.linked_place_id is not null THEN
     --DEBUG: RAISE WARNING 'place already linked to %', NEW.linked_place_id;
@@ -740,9 +741,18 @@ BEGIN
     IF NEW.parent_place_id is not null THEN
 
       -- Get the details of the parent road
-      SELECT p.country_code, p.postcode FROM placex p
+      SELECT p.country_code, p.postcode, p.name FROM placex p
        WHERE p.place_id = NEW.parent_place_id INTO location;
 
+      IF addr_street is null and addr_place is not null THEN
+        -- Check if the addr:place tag is part of the parent name
+        SELECT count(*) INTO i
+          FROM svals(location.name) AS pname WHERE pname = addr_place;
+        IF i = 0 THEN
+          NEW.address = NEW.address || hstore('_unlisted_place', addr_place);
+        END IF;
+      END IF;
+
       NEW.country_code := location.country_code;
       --DEBUG: RAISE WARNING 'Got parent details from search name';
 
index 3fda7ae8afaf98477d4ab56d377cdbd2ce45ad2b..a0a53911f86d221579f1a2cf6ec515ddef5c4296 100644 (file)
@@ -27,8 +27,8 @@ Feature: Creation of search terms
          | N1     | #23         | Rose Street, Walltown |
         When searching for "23 Rose Street, Walltown"
         Then results contain
-         | osm_type | osm_id |
-         | N        | 1 |
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Rose Street |
 
     Scenario: Unnamed POI has no search entry when it has known addr: tags
         Given the scene roads-with-pois
@@ -42,8 +42,8 @@ Feature: Creation of search terms
         Then search_name has no entry for N1
         When searching for "23 Rose Street, Walltown"
         Then results contain
-         | osm_type | osm_id |
-         | N        | 1 |
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Rose Street |
 
     Scenario: Unnamed POI must have a house number to get a search entry
         Given the scene roads-with-pois
@@ -72,12 +72,12 @@ Feature: Creation of search terms
         When searching for "23 Rose Street"
         Then exactly 1 results are returned
         And results contain
-         | osm_type | osm_id |
-         | W        | 1 |
+         | osm_type | osm_id | name |
+         | W        | 1      | Rose Street, Strange Town |
         When searching for "23 Walltown"
         Then results contain
-         | osm_type | osm_id |
-         | N        | 1 |
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Walltown, Strange Town |
 
     Scenario: Unnamed POIs doesn't inherit parent name when addr:place is present only in parent address
         Given the scene roads-with-pois
@@ -95,13 +95,13 @@ Feature: Creation of search terms
         When searching for "23 Rose Street, Walltown"
         Then exactly 1 result is returned
         And results contain
-         | osm_type | osm_id |
-         | W        | 1 |
+         | osm_type | osm_id | name |
+         | W        | 1      | Rose Street, Strange Town |
         When searching for "23  Walltown"
         Then exactly 1 result is returned
         And results contain
-         | osm_type | osm_id |
-         | N        | 1 |
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Walltown, Strange Town |
 
     Scenario: Unnamed POIs does inherit parent name when unknown addr:place and addr:street is present
         Given the scene roads-with-pois
@@ -115,8 +115,8 @@ Feature: Creation of search terms
         Then search_name has no entry for N1
         When searching for "23 Rose Street"
         Then results contain
-         | osm_type | osm_id |
-         | N        | 1 |
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Rose Street |
         When searching for "23 Lily Street"
         Then exactly 0 results are returned
 
@@ -132,8 +132,8 @@ Feature: Creation of search terms
         Then search_name has no entry for N1
         When searching for "23 Rose Street"
         Then results contain
-         | osm_type | osm_id |
-         | N        | 1 |
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Rose Street |
         When searching for "23 Lily Street"
         Then exactly 0 results are returned
 
@@ -151,8 +151,8 @@ Feature: Creation of search terms
          | N1     | #Green Moss | Rose Street, Walltown |
         When searching for "Green Moss, Rose Street, Walltown"
         Then results contain
-         | osm_type | osm_id |
-         | N        | 1 |
+         | osm_type | osm_id | name |
+         | N        | 1      | Green Moss, Rose Street |
 
     Scenario: Named POI doesn't inherit parent name when addr:place is present only in parent address
         Given the scene roads-with-pois
@@ -171,8 +171,8 @@ Feature: Creation of search terms
         Then exactly 0 result is returned
         When searching for "Green Moss, Walltown"
         Then results contain
-         | osm_type | osm_id |
-         | N        | 1 |
+         | osm_type | osm_id | name |
+         | N        | 1      | Green Moss, Walltown, Strange Town |
 
     Scenario: Named POIs inherit address from parent
         Given the scene roads-with-pois