]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/bdd/db/import/search_name.feature
Search housenumbers with unknown address parts by housenumber term
[nominatim.git] / test / bdd / db / import / search_name.feature
index 866a597da178bf021940bd44415a250795f4efd3..0e922e1d6b503716f649ff8b13409adf21bd9a1f 100644 (file)
@@ -23,14 +23,47 @@ Feature: Creation of search terms
          | W1  | highway | residential | Rose Street | :w-north |
         When importing
         Then search_name contains
-         | object | name_vector | nameaddress_vector |
-         | N1     | #23         | Rose Street, Walltown |
+         | object | nameaddress_vector |
+         | N1     | Rose, Street, Walltown |
         When searching for "23 Rose Street, Walltown"
         Then results contain
          | osm_type | osm_id | name |
          | N        | 1      | 23, Rose Street |
+        When searching for "Walltown, Rose Street 23"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Rose Street |
+        When searching for "Rose Street 23, Walltown"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Rose Street |
 
-    Scenario: Unnamed POI has no search entry when it has known addr: tags
+    Scenario: Searching for unknown addr: tags also works for multiple words
+        Given the scene roads-with-pois
+        And the places
+         | osm | class   | type        | housenr | addr+city        | geometry |
+         | N1  | place   | house       | 23      | Little Big Town  | :p-N1 |
+        And the places
+         | osm | class   | type        | name+name   | geometry |
+         | W1  | highway | residential | Rose Street | :w-north |
+        When importing
+        Then search_name contains
+         | object | nameaddress_vector |
+         | N1     | Rose Street, Little, Big, Town |
+        When searching for "23 Rose Street, Little Big Town"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Rose Street |
+        When searching for "Rose Street 23, Little Big Town"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Rose Street |
+        When searching for "Little big Town, Rose Street 23"
+        Then results contain
+         | 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
         And the places
          | osm | class   | type        | housenr | addr+city | geometry |
@@ -56,7 +89,7 @@ Feature: Creation of search terms
         When importing
         Then search_name has no entry for N1
 
-    Scenario: Unnamed POIs doesn't inherit parent name when unknown addr:place is present
+    Scenario: Unnamed POIs inherit parent name when unknown addr:place is present
         Given the scene roads-with-pois
         And the places
          | osm | class   | type        | housenr | addr+place | geometry |
@@ -66,19 +99,86 @@ Feature: Creation of search terms
          | W1  | highway | residential | Rose Street  | :w-north |
          | N2  | place   | city        | Strange Town | :p-N1 |
         When importing
+        Then placex contains
+         | object | parent_place_id |
+         | N1     | N2              |
         Then search_name contains
          | object | name_vector | nameaddress_vector |
-         | N1     | #23         | Walltown |
+         | N1     | #Walltown   | Strange, Town |
         When searching for "23 Rose Street"
         Then exactly 1 results are returned
         And results contain
          | osm_type | osm_id | name |
          | W        | 1      | Rose Street, Strange Town |
-        When searching for "23 Walltown"
+        When searching for "23 Walltown, Strange Town"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Walltown, Strange Town |
+        When searching for "Walltown 23, Strange Town"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | 23, Walltown, Strange Town |
+        When searching for "Strange Town, Walltown 23"
         Then results contain
          | osm_type | osm_id | name |
          | N        | 1      | 23, Walltown, Strange Town |
 
+    Scenario: Named POIs can be searched by housenumber when unknown addr:place is present
+        Given the scene roads-with-pois
+        And the places
+         | osm | class   | type  | name       | housenr | addr+place | geometry |
+         | N1  | place   | house | Blue house | 23      | Walltown   | :p-N1 |
+        And the places
+         | 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     | #Walltown, #Blue house | Walltown, Strange, Town |
+        When searching for "23 Walltown, Strange Town"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Blue house, 23, Walltown, Strange Town |
+        When searching for "Walltown 23, Strange Town"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Blue house, 23, Walltown, Strange Town |
+        When searching for "Strange Town, Walltown 23"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Blue house, 23, Walltown, Strange Town |
+        When searching for "Strange Town, Walltown 23, Blue house"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Blue house, 23, Walltown, Strange Town |
+        When searching for "Strange Town, Walltown, Blue house"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Blue house, 23, Walltown, Strange Town |
+
+    Scenario: Named POIs can be found when unknown multi-word addr:place is present
+        Given the scene roads-with-pois
+        And the places
+         | osm | class   | type  | name       | housenr | addr+place | geometry |
+         | N1  | place   | house | Blue house | 23      | Moon sun   | :p-N1 |
+        And the places
+         | 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     | #Moon sun, #Blue house | Moon, Sun, Strange, Town |
+        When searching for "23 Moon Sun, Strange Town"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Blue house, 23, Moon sun, Strange Town |
+        When searching for "Blue house, Moon Sun, Strange Town"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Blue house, 23, Moon sun, 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
         And the places
@@ -91,7 +191,7 @@ Feature: Creation of search terms
         When importing
         Then search_name contains
          | object | name_vector | nameaddress_vector |
-         | N1     | #23         | Walltown |
+         | N1     | #Walltown   | Strange, Town      |
         When searching for "23 Rose Street, Walltown"
         Then exactly 1 result is returned
         And results contain
@@ -137,22 +237,38 @@ Feature: Creation of search terms
         When searching for "23 Lily Street"
         Then exactly 0 results are returned
 
-    Scenario: Named POIs have unknown address tags added in the search_name table
+    Scenario: Named POIs get unknown address tags added in the search_name table
         Given the scene roads-with-pois
         And the places
-         | osm | class   | type        | name+name  | addr+city | geometry |
-         | N1  | place   | house       | Green Moss | Walltown  | :p-N1 |
+         | osm | class   | type        | name+name  | housenr | addr+city | geometry |
+         | N1  | place   | house       | Green Moss | 26      | Walltown  | :p-N1 |
         And the places
          | osm | class   | type        | name+name   | geometry |
          | W1  | highway | residential | Rose Street | :w-north |
         When importing
         Then search_name contains
          | object | name_vector | nameaddress_vector |
-         | N1     | #Green Moss | Rose Street, Walltown |
+         | N1     | #Green Moss | Rose, Street, Walltown |
         When searching for "Green Moss, Rose Street, Walltown"
         Then results contain
          | osm_type | osm_id | name |
-         | N        | 1      | Green Moss, Rose Street |
+         | N        | 1      | Green Moss, 26, Rose Street |
+        When searching for "Green Moss, 26, Rose Street, Walltown"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Green Moss, 26, Rose Street |
+        When searching for "26, Rose Street, Walltown"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Green Moss, 26, Rose Street |
+        When searching for "Rose Street 26, Walltown"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Green Moss, 26, Rose Street |
+        When searching for "Walltown, Rose Street 26"
+        Then results contain
+         | osm_type | osm_id | name |
+         | N        | 1      | Green Moss, 26, 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
@@ -197,7 +313,7 @@ Feature: Creation of search terms
         When importing
         Then search_name contains
          | object | nameaddress_vector |
-         | W1     | bonn, new york, smalltown |
+         | W1     | bonn, new, york, smalltown |
 
     Scenario: A known addr:* tag is added even if the name is unknown
         Given the scene roads-with-pois