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