mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-11-30 12:22:10 +03:00
a263e54b94
The tokenizer to be used can be choosen with -DTOKENIZER. Adapt all tests, so that they work with legacy_icu tokenizer. Move lookup in word table to a function in the tokenizer. Special phrases are temporarily imported from the wiki until we have an implementation that can import from file. TIGER tests do not work yet.
219 lines
7.5 KiB
Gherkin
219 lines
7.5 KiB
Gherkin
@APIDB
|
||
Feature: Search queries
|
||
Generic search result correctness
|
||
|
||
Scenario: House number search for non-street address
|
||
When sending json search query "6 Silum, Liechtenstein" with address
|
||
| accept-language |
|
||
| en |
|
||
Then address of result 0 is
|
||
| type | value |
|
||
| house_number | 6 |
|
||
| village | Silum |
|
||
| town | Triesenberg |
|
||
| county | Oberland |
|
||
| postcode | 9497 |
|
||
| country | Liechtenstein |
|
||
| country_code | li |
|
||
|
||
Scenario: House number interpolation
|
||
When sending json search query "Grosssteg 1023, Triesenberg" with address
|
||
| accept-language |
|
||
| de |
|
||
Then address of result 0 contains
|
||
| type | value |
|
||
| house_number | 1023 |
|
||
| road | Grosssteg |
|
||
| village | Sücka |
|
||
| postcode | 9497 |
|
||
| town | Triesenberg |
|
||
| country | Liechtenstein |
|
||
| country_code | li |
|
||
|
||
Scenario: With missing housenumber search falls back to road
|
||
When sending json search query "Bündaweg 555" with address
|
||
Then address of result 0 is
|
||
| type | value |
|
||
| road | Bündaweg |
|
||
| village | Silum |
|
||
| postcode | 9497 |
|
||
| county | Oberland |
|
||
| town | Triesenberg |
|
||
| country | Liechtenstein |
|
||
| country_code | li |
|
||
|
||
Scenario Outline: Housenumber 0 can be found
|
||
When sending <format> search query "Gnalpstrasse 0" with address
|
||
Then results contain
|
||
| display_name |
|
||
| ^0,.* |
|
||
And result addresses contain
|
||
| house_number |
|
||
| 0 |
|
||
|
||
Examples:
|
||
| format |
|
||
| xml |
|
||
| json |
|
||
| jsonv2 |
|
||
| geojson |
|
||
|
||
@Tiger
|
||
Scenario: TIGER house number
|
||
When sending json search query "697 Upper Kingston Road"
|
||
Then results contain
|
||
| osm_type | display_name |
|
||
| way | ^697,.* |
|
||
|
||
Scenario: Search with class-type feature
|
||
When sending jsonv2 search query "Hotel in California"
|
||
Then results contain
|
||
| place_rank |
|
||
| 30 |
|
||
|
||
Scenario: Search with specific amenity
|
||
When sending json search query "[restaurant] Vaduz" with address
|
||
Then result addresses contain
|
||
| country |
|
||
| Liechtenstein |
|
||
And results contain
|
||
| class | type |
|
||
| amenity | restaurant |
|
||
|
||
Scenario: Search with specific amenity also work in country
|
||
When sending json search query "restaurants in liechtenstein" with address
|
||
Then result addresses contain
|
||
| country |
|
||
| Liechtenstein |
|
||
And results contain
|
||
| class | type |
|
||
| amenity | restaurant |
|
||
|
||
Scenario: Search with key-value amenity
|
||
When sending json search query "[club=scout] Vaduz"
|
||
Then results contain
|
||
| class | type |
|
||
| club | scout |
|
||
|
||
Scenario: With multiple amenity search only the first is used
|
||
When sending json search query "[club=scout] [church] vaduz"
|
||
Then results contain
|
||
| class | type |
|
||
| club | scout |
|
||
When sending json search query "[amenity=place_of_worship] [club=scout] vaduz"
|
||
Then results contain
|
||
| class | type |
|
||
| amenity | place_of_worship |
|
||
|
||
Scenario: POI search near given coordinate
|
||
When sending json search query "restaurant near 47.16712,9.51100"
|
||
Then results contain
|
||
| class | type |
|
||
| amenity | restaurant |
|
||
|
||
Scenario: Arbitrary key/value search near given coordinate
|
||
When sending json search query "[leisure=firepit] 47.150° N 9.5340493° E"
|
||
Then results contain
|
||
| class | type |
|
||
| leisure | firepit |
|
||
|
||
Scenario: Arbitrary key/value search near given coordinate and named place
|
||
When sending json search query "[leisure=firepit] ebenholz 47° 9′ 26″ N 9° 36′ 45″ E"
|
||
Then results contain
|
||
| class | type |
|
||
| leisure | firepit |
|
||
|
||
Scenario Outline: Key/value search near given coordinate can be restricted to country
|
||
When sending json search query "[natural=peak] 47.06512,9.53965" with address
|
||
| countrycodes |
|
||
| <cc> |
|
||
Then result addresses contain
|
||
| country_code |
|
||
| <cc> |
|
||
|
||
Examples:
|
||
| cc |
|
||
| li |
|
||
| ch |
|
||
|
||
Scenario: Name search near given coordinate
|
||
When sending json search query "sporry" with address
|
||
Then result addresses contain
|
||
| ID | town |
|
||
| 0 | Vaduz |
|
||
When sending json search query "sporry, 47.10791,9.52676" with address
|
||
Then result addresses contain
|
||
| ID | village |
|
||
| 0 | Triesen |
|
||
|
||
Scenario: Name search near given coordinate without result
|
||
When sending json search query "sporry, N 47 15 7 W 9 61 26"
|
||
Then exactly 0 results are returned
|
||
|
||
Scenario: Arbitrary key/value search near a road
|
||
When sending json search query "[amenity=drinking_water] Wissfläckaweg"
|
||
Then results contain
|
||
| class | type |
|
||
| amenity | drinking_water |
|
||
|
||
Scenario: Ignore other country codes in structured search with country
|
||
When sending json search query ""
|
||
| city | country |
|
||
| li | de |
|
||
Then exactly 0 results are returned
|
||
|
||
Scenario: Ignore country searches when query is restricted to countries
|
||
When sending json search query "fr"
|
||
| countrycodes |
|
||
| li |
|
||
Then exactly 0 results are returned
|
||
|
||
Scenario: Country searches only return results for the given country
|
||
When sending search query "Ans Trail" with address
|
||
| countrycodes |
|
||
| li |
|
||
Then result addresses contain
|
||
| country_code |
|
||
| li |
|
||
|
||
# https://trac.openstreetmap.org/ticket/5094
|
||
Scenario: housenumbers are ordered by complete match first
|
||
When sending json search query "Austrasse 11, Vaduz" with address
|
||
Then result addresses contain
|
||
| ID | house_number |
|
||
| 0 | 11 |
|
||
| 1 | 11 a |
|
||
|
||
Scenario Outline: Coordinate searches with white spaces
|
||
When sending json search query "<data>"
|
||
Then exactly 1 result is returned
|
||
And results contain
|
||
| class |
|
||
| natural |
|
||
|
||
Examples:
|
||
| data |
|
||
| sporry weiher, N 47.10791° E 9.52676° |
|
||
| sporry weiher, N 47.10791° E 9.52676° |
|
||
| sporry weiher , N 47.10791° E 9.52676° |
|
||
| sporry weiher, N 47.10791° E 9.52676° |
|
||
| sporry weiher, N 47.10791° E 9.52676° |
|
||
|
||
Scenario: Searches with white spaces
|
||
When sending json search query "52 Bodastr,Triesenberg"
|
||
Then results contain
|
||
| class | type |
|
||
| highway | residential |
|
||
|
||
|
||
# github #1949
|
||
Scenario: Addressdetails always return the place type
|
||
When sending json search query "Vaduz" with address
|
||
Then result addresses contain
|
||
| ID | town |
|
||
| 0 | Vaduz |
|
||
|
||
Scenario: Search can handle complex query word sets
|
||
When sending search query "aussenstelle universitat lichtenstein wachterhaus aussenstelle universitat lichtenstein wachterhaus aussenstelle universitat lichtenstein wachterhaus aussenstelle universitat lichtenstein wachterhaus"
|
||
Then a HTTP 200 is returned
|