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