]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/import/search_name.feature
lift restrictions on search with frequent terms slightly
[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: Semicolon-separated names appear as separate full names
6         Given the places
7          | osm | class   | type | name+alt_name |
8          | N1  | place   | city | New York; Big Apple |
9         When importing
10         Then search_name contains
11          | object | name_vector |
12          | N1     | #New York, #Big Apple |
13
14     @fail-legacy
15     Scenario: Comma-separated names appear as a single full name
16         Given the places
17          | osm | class   | type | name+alt_name |
18          | N1  | place   | city | New York, Big Apple |
19         When importing
20         Then search_name contains
21          | object | name_vector |
22          | N1     | #New York Big Apple |
23
24     Scenario: Name parts before brackets appear as full names
25         Given the places
26          | osm | class   | type | name+name |
27          | N1  | place   | city | Halle (Saale) |
28         When importing
29         Then search_name contains
30          | object | name_vector |
31          | N1     | #Halle Saale, #Halle |
32
33     Scenario: Unnamed POIs have no search entry
34         Given the grid
35          |    | 1 |  |    |
36          | 10 |   |  | 11 |
37         And the places
38          | osm | class   | type        |
39          | N1  | place   | house       |
40         And the named places
41          | osm | class   | type        | geometry |
42          | W1  | highway | residential | 10,11    |
43         When importing
44         Then search_name has no entry for N1
45
46     Scenario: Unnamed POI has a search entry when it has unknown addr: tags
47         Given the grid
48          |    | 1 |  |    |
49          | 10 |   |  | 11 |
50         And the places
51          | osm | class   | type        | housenr | addr+city |
52          | N1  | place   | house       | 23      | Walltown  |
53         And the places
54          | osm | class   | type        | name+name   | geometry |
55          | W1  | highway | residential | Rose Street | 10,11    |
56         When importing
57         Then search_name contains
58          | object | nameaddress_vector |
59          | N1     | #Rose Street, Walltown |
60         When sending search query "23 Rose Street, Walltown"
61         Then results contain
62          | osm | display_name |
63          | N1  | 23, Rose Street |
64         When sending search query "Walltown, Rose Street 23"
65         Then results contain
66          | osm | display_name |
67          | N1  | 23, Rose Street |
68         When sending search query "Rose Street 23, Walltown"
69         Then results contain
70          | osm | display_name |
71          | N1  | 23, Rose Street |
72
73     Scenario: Searching for unknown addr: tags also works for multiple words
74         Given the grid
75          |    | 1 |  |    |
76          | 10 |   |  | 11 |
77         And the places
78          | osm | class   | type        | housenr | addr+city        |
79          | N1  | place   | house       | 23      | Little Big Town  |
80         And the places
81          | osm | class   | type        | name+name   | geometry |
82          | W1  | highway | residential | Rose Street | 10,11    |
83         When importing
84         Then search_name contains
85          | object | nameaddress_vector |
86          | N1     | #Rose Street, rose, Little, Big, Town |
87         When sending search query "23 Rose Street, Little Big Town"
88         Then results contain
89          | osm | display_name |
90          | N1  | 23, Rose Street |
91         When sending search query "Rose Street 23, Little Big Town"
92         Then results contain
93          | osm | display_name |
94          | N1  | 23, Rose Street |
95         When sending search query "Little big Town, Rose Street 23"
96         Then results contain
97          | osm | display_name |
98          | N1  | 23, Rose Street |
99
100      Scenario: Unnamed POI has no search entry when it has known addr: tags
101         Given the grid
102          |    | 1 |  |    |
103          | 10 |   |  | 11 |
104         And the places
105          | osm | class   | type        | housenr | addr+city |
106          | N1  | place   | house       | 23      | Walltown  |
107         And the places
108          | osm | class   | type        | name+name   | addr+city | geometry |
109          | W1  | highway | residential | Rose Street | Walltown  | 10,11    |
110         When importing
111         Then search_name has no entry for N1
112         When sending search query "23 Rose Street, Walltown"
113         Then results contain
114          | osm | display_name |
115          | N1  | 23, Rose Street |
116
117     Scenario: Unnamed POI must have a house number to get a search entry
118         Given the grid
119          |    | 1 |  |    |
120          | 10 |   |  | 11 |
121         And the places
122          | osm | class   | type   | addr+city |
123          | N1  | place   | house  | Walltown  |
124         And the places
125          | osm | class   | type        | name+name   | geometry |
126          | W1  | highway | residential | Rose Street | 10,11    |
127         When importing
128         Then search_name has no entry for N1
129
130     Scenario: Unnamed POIs inherit parent name when unknown addr:place is present
131         Given the grid
132          | 100 |    |   |   |    | 101 |
133          |     |    | 1 |   |    |     |
134          | 103 | 10 |   |   | 11 | 102 |
135         And the places
136          | osm | class   | type        | housenr | addr+place |
137          | N1  | place   | house       | 23      | Walltown   |
138         And the places
139          | osm | class   | type        | name+name    | geometry |
140          | W1  | highway | residential | Rose Street  | 10,11    |
141          | R1  | place   | city        | Strange Town | (100,101,102,103,100) |
142         When importing
143         Then placex contains
144          | object | parent_place_id |
145          | N1     | R1              |
146         When sending search query "23 Rose Street"
147         Then exactly 1 results are returned
148         And results contain
149          | osm | display_name |
150          | W1  | Rose Street, Strange Town |
151         When sending search query "23 Walltown, Strange Town"
152         Then results contain
153          | osm | display_name |
154          | N1  | 23, Walltown, Strange Town |
155         When sending search query "Walltown 23, Strange Town"
156         Then results contain
157          | osm | display_name |
158          | N1  | 23, Walltown, Strange Town |
159         When sending search query "Strange Town, Walltown 23"
160         Then results contain
161          | osm | display_name |
162          | N1  | 23, Walltown, Strange Town |
163
164     Scenario: Named POIs can be searched by housenumber when unknown addr:place is present
165         Given the grid
166          | 100 |    |   |   |    | 101 |
167          |     |    | 1 |   |    |     |
168          | 103 | 10 |   |   | 11 | 102 |
169         And the places
170          | osm | class   | type  | name       | housenr | addr+place |
171          | N1  | place   | house | Blue house | 23      | Walltown   |
172         And the places
173          | osm | class   | type        | name+name    | geometry |
174          | W1  | highway | residential | Rose Street  | 10,11 |
175          | R1  | place   | city        | Strange Town | (100,101,102,103,100) |
176         When importing
177         When sending search query "23 Walltown, Strange Town"
178         Then results contain
179          | osm | display_name |
180          | N1  | Blue house, 23, Walltown, Strange Town |
181         When sending search query "Walltown 23, Strange Town"
182         Then results contain
183          | osm | display_name |
184          | N1  | Blue house, 23, Walltown, Strange Town |
185         When sending search query "Strange Town, Walltown 23"
186         Then results contain
187          | osm | display_name |
188          | N1  | Blue house, 23, Walltown, Strange Town |
189         When sending search query "Strange Town, Walltown 23, Blue house"
190         Then results contain
191          | osm | display_name |
192          | N1  | Blue house, 23, Walltown, Strange Town |
193         When sending search query "Strange Town, Walltown, Blue house"
194         Then results contain
195          | osm | display_name |
196          | N1  | Blue house, 23, Walltown, Strange Town |
197
198     Scenario: Named POIs can be found when unknown multi-word addr:place is present
199         Given the grid
200          | 100 |    |   |   |    | 101 |
201          |     |    | 1 |   |    |     |
202          | 103 | 10 |   |   | 11 | 102 |
203         And the places
204          | osm | class   | type  | name       | housenr | addr+place |
205          | N1  | place   | house | Blue house | 23      | Moon sun   |
206         And the places
207          | osm | class   | type        | name+name    | geometry |
208          | W1  | highway | residential | Rose Street  | 10,11    |
209          | R1  | place   | city        | Strange Town | (100,101,102,103,100) |
210         When importing
211         When sending search query "23 Moon Sun, Strange Town"
212         Then results contain
213          | osm | display_name |
214          | N1  | Blue house, 23, Moon sun, Strange Town |
215         When sending search query "Blue house, Moon Sun, Strange Town"
216         Then results contain
217          | osm | display_name |
218          | N1  | Blue house, 23, Moon sun, Strange Town |
219
220     Scenario: Unnamed POIs doesn't inherit parent name when addr:place is present only in parent address
221         Given the grid
222          | 100 |    |   |   |    | 101 |
223          |     |    | 1 |   |    |     |
224          | 103 | 10 |   |   | 11 | 102 |
225         And the places
226          | osm | class   | type        | housenr | addr+place |
227          | N1  | place   | house       | 23      | Walltown   |
228         And the places
229          | osm | class   | type        | name+name    | addr+city | geometry |
230          | W1  | highway | residential | Rose Street  | Walltown  | 10,11    |
231          | R1  | place   | suburb      | Strange Town | Walltown  | (100,101,102,103,100) |
232         When importing
233         When sending search query "23 Rose Street, Walltown"
234         Then exactly 1 result is returned
235         And results contain
236          | osm | display_name |
237          | W1  | Rose Street, Strange Town |
238         When sending search query "23  Walltown"
239         Then exactly 1 result is returned
240         And results contain
241          | osm | display_name |
242          | N1  | 23, Walltown, Strange Town |
243
244     Scenario: Unnamed POIs does inherit parent name when unknown addr:place and addr:street is present
245         Given the grid
246          |    | 1 |  |    |
247          | 10 |   |  | 11 |
248         And the places
249          | osm | class   | type   | housenr | addr+place | addr+street |
250          | N1  | place   | house  | 23      | Walltown   | Lily Street |
251         And the places
252          | osm | class   | type        | name+name   | geometry |
253          | W1  | highway | residential | Rose Street | 10,11    |
254         When importing
255         Then search_name has no entry for N1
256         When sending search query "23 Rose Street"
257         Then results contain
258          | osm | display_name |
259          | N1  | 23, Rose Street |
260         When sending search query "23 Lily Street"
261         Then exactly 0 results are returned
262
263     Scenario: An unknown addr:street is ignored
264         Given the grid
265          |    | 1 |  |    |
266          | 10 |   |  | 11 |
267         And the places
268          | osm | class   | type   | housenr |  addr+street |
269          | N1  | place   | house  | 23      |  Lily Street |
270         And the places
271          | osm | class   | type        | name+name   | geometry |
272          | W1  | highway | residential | Rose Street | 10,11    |
273         When importing
274         Then search_name has no entry for N1
275         When sending search query "23 Rose Street"
276         Then results contain
277          | osm | display_name |
278          | N1  | 23, Rose Street |
279         When sending search query "23 Lily Street"
280         Then exactly 0 results are returned
281
282     Scenario: Named POIs get unknown address tags added in the search_name table
283         Given the grid
284          |    | 1 |  |    |
285          | 10 |   |  | 11 |
286         And the places
287          | osm | class   | type        | name+name  | housenr | addr+city |
288          | N1  | place   | house       | Green Moss | 26      | Walltown  |
289         And the places
290          | osm | class   | type        | name+name   | geometry |
291          | W1  | highway | residential | Rose Street | 10,11    |
292         When importing
293         Then search_name contains
294          | object | name_vector | nameaddress_vector |
295          | N1     | #Green Moss | #Rose Street, Walltown |
296         When sending search query "Green Moss, Rose Street, Walltown"
297         Then results contain
298          | osm | display_name |
299          | N1  | Green Moss, 26, Rose Street |
300         When sending search query "Green Moss, 26, Rose Street, Walltown"
301         Then results contain
302          | osm | display_name |
303          | N1  | Green Moss, 26, Rose Street |
304         When sending search query "26, Rose Street, Walltown"
305         Then results contain
306          | osm | display_name |
307          | N1  | Green Moss, 26, Rose Street |
308         When sending search query "Rose Street 26, Walltown"
309         Then results contain
310          | osm | display_name |
311          | N1  | Green Moss, 26, Rose Street |
312         When sending search query "Walltown, Rose Street 26"
313         Then results contain
314          | osm | display_name |
315          | N1  | Green Moss, 26, Rose Street |
316
317     Scenario: Named POI doesn't inherit parent name when addr:place is present only in parent address
318         Given the grid
319          | 100 |    |   |   |    | 101 |
320          |     |    | 1 |   |    |     |
321          | 103 | 10 |   |   | 11 | 102 |
322         And the places
323          | osm | class   | type        | name+name  | addr+place |
324          | N1  | place   | house       | Green Moss | Walltown   |
325         And the places
326          | osm | class   | type        | name+name    | geometry |
327          | W1  | highway | residential | Rose Street  | 10,11    |
328          | R1  | place   | suburb      | Strange Town | (100,101,102,103,100) |
329         When importing
330         When sending search query "Green Moss, Rose Street, Walltown"
331         Then exactly 0 result is returned
332         When sending search query "Green Moss, Walltown"
333         Then results contain
334          | osm | display_name |
335          | N1  | Green Moss, Walltown, Strange Town |
336
337     Scenario: Named POIs inherit address from parent
338         Given the grid
339          |    | 1 |  |    |
340          | 10 |   |  | 11 |
341         And the places
342          | osm | class   | type        | name     | geometry |
343          | N1  | place   | house       | foo      | 1        |
344          | W1  | highway | residential | the road | 10,11    |
345         When importing
346         Then search_name contains
347          | object | name_vector | nameaddress_vector |
348          | N1     | foo         | #the road |
349
350     Scenario: Some addr: tags are added to address
351         Given the grid
352          |    | 2 | 3 |    |
353          | 10 |   |   | 11 |
354         And the places
355          | osm | class   | type        | name     |
356          | N2  | place   | city        | bonn     |
357          | N3  | place   | suburb      | smalltown|
358         And the named places
359          | osm | class   | type    | addr+city | addr+municipality | addr+suburb | geometry |
360          | W1  | highway | service | bonn      | New York          | Smalltown   | 10,11    |
361         When importing
362         Then search_name contains
363          | object | nameaddress_vector |
364          | W1     | bonn, new, york, smalltown |
365
366     Scenario: A known addr:* tag is added even if the name is unknown
367         Given the grid
368          | 10 | | | | 11 |
369         And the places
370          | osm | class   | type        | name | addr+city | geometry |
371          | W1  | highway | residential | Road | Nandu     | 10,11    |
372         When importing
373         Then search_name contains
374          | object | nameaddress_vector |
375          | W1     | nandu |
376
377     Scenario: addr:postcode is not added to the address terms
378         Given the grid with origin DE
379          |    | 1 |  |    |
380          | 10 |   |  | 11 |
381         And the places
382          | osm | class   | type        | name+ref  |
383          | N1  | place   | state       | 12345     |
384         And the named places
385          | osm | class   | type        | addr+postcode | geometry |
386          | W1  | highway | residential | 12345         | 10,11    |
387         When importing
388         Then search_name contains not
389          | object | nameaddress_vector |
390          | W1     | 12345 |
391
392     Scenario: a linked place does not show up in search name
393         Given the 0.01 grid
394          | 10 |   | 11 |
395          |    | 2 |    |
396          | 13 |   | 12 |
397         Given the named places
398          | osm  | class    | type           | admin | geometry |
399          | R13  | boundary | administrative | 9     | (10,11,12,13,10) |
400         And the named places
401          | osm  | class    | type           |
402          | N2   | place    | city           |
403         And the relations
404          | id | members       | tags+type |
405          | 13 | N2:label      | boundary |
406         When importing
407         Then placex contains
408          | object | linked_place_id |
409          | N2     | R13             |
410         And search_name has no entry for N2
411
412     Scenario: a linked waterway does not show up in search name
413         Given the grid
414          | 1 | | 2 | | 3 |
415         And the places
416          | osm | class    | type  | name  | geometry |
417          | W1  | waterway | river | Rhein | 1,2      |
418          | W2  | waterway | river | Rhein | 2,3      |
419          | R13 | waterway | river | Rhein | 1,2,3    |
420         And the relations
421          | id | members            | tags+type |
422          | 13 | W1,W2:main_stream  | waterway |
423         When importing
424         Then placex contains
425          | object | linked_place_id |
426          | W1     | R13 |
427          | W2     | R13 |
428         And search_name has no entry for W1
429         And search_name has no entry for W2