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