]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/import/search_name.feature
Merge pull request #2058 from lonvia/split-address-words
[nominatim.git] / test / bdd / db / import / search_name.feature
1 @DB
2 Feature: Creation of search terms
3     Tests that search_name table is filled correctly
4
5     Scenario: Unnamed POIs have no search entry
6         Given the scene roads-with-pois
7         And the places
8          | osm | class   | type        | geometry |
9          | N1  | place   | house       | :p-N1 |
10         And the named places
11          | osm | class   | type        | geometry |
12          | W1  | highway | residential | :w-north |
13         When importing
14         Then search_name has no entry for N1
15
16     Scenario: Unnamed POI has a search entry when it has unknown addr: tags
17         Given the scene roads-with-pois
18         And the places
19          | osm | class   | type        | housenr | addr+city | geometry |
20          | N1  | place   | house       | 23      | Walltown  | :p-N1 |
21         And the places
22          | osm | class   | type        | name+name   | geometry |
23          | W1  | highway | residential | Rose Street | :w-north |
24         When importing
25         Then search_name contains
26          | object | name_vector | nameaddress_vector |
27          | N1     | #23         | Rose Street, Walltown |
28         When searching for "23 Rose Street, Walltown"
29         Then results contain
30          | osm_type | osm_id | name |
31          | N        | 1      | 23, Rose Street |
32
33     Scenario: Searching for unknown addr: tags also works for multiple words
34         Given the scene roads-with-pois
35         And the places
36          | osm | class   | type        | housenr | addr+city        | geometry |
37          | N1  | place   | house       | 23      | Little Big Town  | :p-N1 |
38         And the places
39          | osm | class   | type        | name+name   | geometry |
40          | W1  | highway | residential | Rose Street | :w-north |
41         When importing
42         Then search_name contains
43          | object | name_vector | nameaddress_vector |
44          | N1     | #23         | Rose Street, Little, Big, Town |
45         When searching for "23 Rose Street, Little Big Town"
46         Then results contain
47          | osm_type | osm_id | name |
48          | N        | 1      | 23, Rose Street |
49
50      Scenario: Unnamed POI has no search entry when it has known addr: tags
51         Given the scene roads-with-pois
52         And the places
53          | osm | class   | type        | housenr | addr+city | geometry |
54          | N1  | place   | house       | 23      | Walltown  | :p-N1 |
55         And the places
56          | osm | class   | type        | name+name   | addr+city | geometry |
57          | W1  | highway | residential | Rose Street | Walltown | :w-north |
58         When importing
59         Then search_name has no entry for N1
60         When searching for "23 Rose Street, Walltown"
61         Then results contain
62          | osm_type | osm_id | name |
63          | N        | 1      | 23, Rose Street |
64
65     Scenario: Unnamed POI must have a house number to get a search entry
66         Given the scene roads-with-pois
67         And the places
68          | osm | class   | type   | addr+city | geometry |
69          | N1  | place   | house  | Walltown  | :p-N1 |
70         And the places
71          | osm | class   | type        | name+name   | geometry |
72          | W1  | highway | residential | Rose Street | :w-north |
73         When importing
74         Then search_name has no entry for N1
75
76     Scenario: Unnamed POIs inherit parent name when unknown addr:place is present
77         Given the scene roads-with-pois
78         And the places
79          | osm | class   | type        | housenr | addr+place | geometry |
80          | N1  | place   | house       | 23      | Walltown   | :p-N1 |
81         And the places
82          | osm | class   | type        | name+name    | geometry |
83          | W1  | highway | residential | Rose Street  | :w-north |
84          | N2  | place   | city        | Strange Town | :p-N1 |
85         When importing
86         Then placex contains
87          | object | parent_place_id |
88          | N1     | N2              |
89         Then search_name contains
90          | object | name_vector | nameaddress_vector |
91          | N1     | #23         | Walltown, Strange, Town |
92         When searching for "23 Rose Street"
93         Then exactly 1 results are returned
94         And results contain
95          | osm_type | osm_id | name |
96          | W        | 1      | Rose Street, Strange Town |
97         When searching for "23 Walltown, Strange Town"
98         Then results contain
99          | osm_type | osm_id | name |
100          | N        | 1      | 23, Walltown, Strange Town |
101
102     Scenario: Unnamed POIs doesn't inherit parent name when addr:place is present only in parent address
103         Given the scene roads-with-pois
104         And the places
105          | osm | class   | type        | housenr | addr+place | geometry |
106          | N1  | place   | house       | 23      | Walltown   | :p-N1 |
107         And the places
108          | osm | class   | type        | name+name    | addr+city | geometry |
109          | W1  | highway | residential | Rose Street  | Walltown  | :w-north |
110          | N2  | place   | suburb      | Strange Town | Walltown  | :p-N1 |
111         When importing
112         Then search_name contains
113          | object | name_vector | nameaddress_vector |
114          | N1     | #23         | Walltown |
115         When searching for "23 Rose Street, Walltown"
116         Then exactly 1 result is returned
117         And results contain
118          | osm_type | osm_id | name |
119          | W        | 1      | Rose Street, Strange Town |
120         When searching for "23  Walltown"
121         Then exactly 1 result is returned
122         And results contain
123          | osm_type | osm_id | name |
124          | N        | 1      | 23, Walltown, Strange Town |
125
126     Scenario: Unnamed POIs does inherit parent name when unknown addr:place and addr:street is present
127         Given the scene roads-with-pois
128         And the places
129          | osm | class   | type   | housenr | addr+place | addr+street | geometry |
130          | N1  | place   | house  | 23      | Walltown   | Lily Street | :p-N1 |
131         And the places
132          | osm | class   | type        | name+name   | geometry |
133          | W1  | highway | residential | Rose Street | :w-north |
134         When importing
135         Then search_name has no entry for N1
136         When searching for "23 Rose Street"
137         Then results contain
138          | osm_type | osm_id | name |
139          | N        | 1      | 23, Rose Street |
140         When searching for "23 Lily Street"
141         Then exactly 0 results are returned
142
143     Scenario: An unknown addr:street is ignored
144         Given the scene roads-with-pois
145         And the places
146          | osm | class   | type   | housenr |  addr+street | geometry |
147          | N1  | place   | house  | 23      |  Lily Street | :p-N1 |
148         And the places
149          | osm | class   | type        | name+name   | geometry |
150          | W1  | highway | residential | Rose Street | :w-north |
151         When importing
152         Then search_name has no entry for N1
153         When searching for "23 Rose Street"
154         Then results contain
155          | osm_type | osm_id | name |
156          | N        | 1      | 23, Rose Street |
157         When searching for "23 Lily Street"
158         Then exactly 0 results are returned
159
160     Scenario: Named POIs have unknown address tags added in the search_name table
161         Given the scene roads-with-pois
162         And the places
163          | osm | class   | type        | name+name  | addr+city | geometry |
164          | N1  | place   | house       | Green Moss | Walltown  | :p-N1 |
165         And the places
166          | osm | class   | type        | name+name   | geometry |
167          | W1  | highway | residential | Rose Street | :w-north |
168         When importing
169         Then search_name contains
170          | object | name_vector | nameaddress_vector |
171          | N1     | #Green Moss | Rose Street, Walltown |
172         When searching for "Green Moss, Rose Street, Walltown"
173         Then results contain
174          | osm_type | osm_id | name |
175          | N        | 1      | Green Moss, Rose Street |
176
177     Scenario: Named POI doesn't inherit parent name when addr:place is present only in parent address
178         Given the scene roads-with-pois
179         And the places
180          | osm | class   | type        | name+name  | addr+place | geometry |
181          | N1  | place   | house       | Green Moss | Walltown  | :p-N1 |
182         And the places
183          | osm | class   | type        | name+name    | geometry |
184          | W1  | highway | residential | Rose Street  | :w-north |
185          | N2  | place   | suburb      | Strange Town | :p-N1 |
186         When importing
187         Then search_name contains
188          | object | name_vector | nameaddress_vector |
189          | N1     | #Green Moss | Walltown |
190         When searching for "Green Moss, Rose Street, Walltown"
191         Then exactly 0 result is returned
192         When searching for "Green Moss, Walltown"
193         Then results contain
194          | osm_type | osm_id | name |
195          | N        | 1      | Green Moss, Walltown, Strange Town |
196
197     Scenario: Named POIs inherit address from parent
198         Given the scene roads-with-pois
199         And the places
200          | osm | class   | type        | name     | geometry |
201          | N1  | place   | house       | foo      | :p-N1 |
202          | W1  | highway | residential | the road | :w-north |
203         When importing
204         Then search_name contains
205          | object | name_vector | nameaddress_vector |
206          | N1     | foo         | the road |
207
208     Scenario: Some addr: tags are added to address
209         Given the scene roads-with-pois
210         And the places
211          | osm | class   | type        | name     | geometry |
212          | N2  | place   | city        | bonn     | 81 81 |
213          | N3  | place   | suburb      | smalltown| 80 81 |
214         And the named places
215          | osm | class   | type    | addr+city | addr+municipality | addr+suburb | geometry |
216          | W1  | highway | service | bonn      | New York          | Smalltown   | :w-north |
217         When importing
218         Then search_name contains
219          | object | nameaddress_vector |
220          | W1     | bonn, new, york, smalltown |
221
222     Scenario: A known addr:* tag is added even if the name is unknown
223         Given the scene roads-with-pois
224         And the places
225          | osm | class   | type        | name | addr+city | geometry |
226          | W1  | highway | residential | Road | Nandu     | :w-north |
227         When importing
228         Then search_name contains
229          | object | nameaddress_vector |
230          | W1     | nandu |
231
232     Scenario: addr:postcode is not added to the address terms
233         Given the scene roads-with-pois
234         And the places
235          | osm | class   | type        | name+ref  | geometry |
236          | N1  | place   | state       | 12345     | 80 80 |
237         And the named places
238          | osm | class   | type        | addr+postcode | geometry |
239          | W1  | highway | residential | 12345 | :w-north |
240         When importing
241         Then search_name contains not
242          | object | nameaddress_vector |
243          | W1     | 12345 |
244
245     Scenario: a linked place does not show up in search name
246         Given the named places
247          | osm  | class    | type           | admin | geometry |
248          | R13  | boundary | administrative | 9     | poly-area:0.01 |
249         And the named places
250          | osm  | class    | type           | geometry |
251          | N2   | place    | city           | 0.1 0.1 |
252         And the relations
253          | id | members       | tags+type |
254          | 13 | N2:label      | boundary |
255         When importing
256         Then placex contains
257          | object | linked_place_id |
258          | N2     | R13             |
259         And search_name has no entry for N2
260
261     Scenario: a linked waterway does not show up in search name
262         Given the scene split-road
263         And the places
264          | osm | class    | type  | name  | geometry |
265          | W1  | waterway | river | Rhein | :w-2 |
266          | W2  | waterway | river | Rhein | :w-3 |
267          | R13 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
268         And the relations
269          | id | members            | tags+type |
270          | 13 | W1,W2:main_stream  | waterway |
271         When importing
272         Then placex contains
273          | object | linked_place_id |
274          | W1     | R13 |
275          | W2     | R13 |
276         And search_name has no entry for W1
277         And search_name has no entry for W2