mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
make sure outputs take into account linked place names
This commit is contained in:
@@ -114,21 +114,26 @@ class ParameterParser
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach ($aLanguages as $sLanguage => $fLanguagePref) {
|
foreach ($aLanguages as $sLanguage => $fLanguagePref) {
|
||||||
$aLangPrefOrder['name:'.$sLanguage] = 'name:'.$sLanguage;
|
$this->addNameTag($aLangPrefOrder, 'name:'.$sLanguage);
|
||||||
}
|
}
|
||||||
$aLangPrefOrder['name'] = 'name';
|
$this->addNameTag($aLangPrefOrder, 'name');
|
||||||
$aLangPrefOrder['brand'] = 'brand';
|
$this->addNameTag($aLangPrefOrder, 'brand');
|
||||||
foreach ($aLanguages as $sLanguage => $fLanguagePref) {
|
foreach ($aLanguages as $sLanguage => $fLanguagePref) {
|
||||||
$aLangPrefOrder['official_name:'.$sLanguage] = 'official_name:'.$sLanguage;
|
$this->addNameTag($aLangPrefOrder, 'official_name:'.$sLanguage);
|
||||||
$aLangPrefOrder['short_name:'.$sLanguage] = 'short_name:'.$sLanguage;
|
$this->addNameTag($aLangPrefOrder, 'short_name:'.$sLanguage);
|
||||||
}
|
}
|
||||||
$aLangPrefOrder['official_name'] = 'official_name';
|
$this->addNameTag($aLangPrefOrder, 'official_name');
|
||||||
$aLangPrefOrder['short_name'] = 'short_name';
|
$this->addNameTag($aLangPrefOrder, 'short_name');
|
||||||
$aLangPrefOrder['ref'] = 'ref';
|
$this->addNameTag($aLangPrefOrder, 'ref');
|
||||||
$aLangPrefOrder['type'] = 'type';
|
$this->addNameTag($aLangPrefOrder, 'type');
|
||||||
return $aLangPrefOrder;
|
return $aLangPrefOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function addNameTag(&$aLangPrefOrder, $sTag) {
|
||||||
|
$aLangPrefOrder[$sTag] = $sTag;
|
||||||
|
$aLangPrefOrder['_place_'.$sTag] = '_place_'.$sTag;
|
||||||
|
}
|
||||||
|
|
||||||
public function hasSetAny($aParamNames)
|
public function hasSetAny($aParamNames)
|
||||||
{
|
{
|
||||||
foreach ($aParamNames as $sName) {
|
foreach ($aParamNames as $sName) {
|
||||||
|
|||||||
@@ -85,7 +85,10 @@ BEGIN
|
|||||||
FROM each(location.name - result.name);
|
FROM each(location.name - result.name);
|
||||||
{% if debug %}RAISE WARNING 'Extra names: %', extra_names;{% endif %}
|
{% if debug %}RAISE WARNING 'Extra names: %', extra_names;{% endif %}
|
||||||
|
|
||||||
result.name := location.name || result.name || extra_names;
|
IF extra_names is not null THEN
|
||||||
|
result.name := result.name || extra_names;
|
||||||
|
END IF;
|
||||||
|
|
||||||
{% if debug %}RAISE WARNING 'Final names: %', result.name;{% endif %}
|
{% if debug %}RAISE WARNING 'Final names: %', result.name;{% endif %}
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
|
|||||||
@@ -18,8 +18,14 @@ Feature: Searching linked places
|
|||||||
| N2 | R13 |
|
| N2 | R13 |
|
||||||
When sending search query "Vario"
|
When sending search query "Vario"
|
||||||
Then results contain
|
Then results contain
|
||||||
| osm |
|
| osm | display_name |
|
||||||
| R13 |
|
| R13 | Garbo |
|
||||||
|
When sending search query "Vario"
|
||||||
|
| accept-language |
|
||||||
|
| it |
|
||||||
|
Then results contain
|
||||||
|
| osm | display_name |
|
||||||
|
| R13 | Vario |
|
||||||
|
|
||||||
|
|
||||||
Scenario: Differing names from linked places are searchable
|
Scenario: Differing names from linked places are searchable
|
||||||
@@ -38,5 +44,9 @@ Feature: Searching linked places
|
|||||||
| N2 | R13 |
|
| N2 | R13 |
|
||||||
When sending search query "Vario"
|
When sending search query "Vario"
|
||||||
Then results contain
|
Then results contain
|
||||||
| osm |
|
| osm | display_name |
|
||||||
| R13 |
|
| R13 | Garbo |
|
||||||
|
When sending search query "Garbo"
|
||||||
|
Then results contain
|
||||||
|
| osm | display_name |
|
||||||
|
| R13 | Garbo |
|
||||||
|
|||||||
@@ -117,8 +117,10 @@ Feature: Updates of linked places
|
|||||||
| 1 | N3:label |
|
| 1 | N3:label |
|
||||||
When importing
|
When importing
|
||||||
Then placex contains
|
Then placex contains
|
||||||
| object | linked_place_id | name+name:de |
|
| object | linked_place_id | name+_place_name:de |
|
||||||
| R1 | - | pnt |
|
| R1 | - | pnt |
|
||||||
|
And placex contains
|
||||||
|
| object | linked_place_id | name+name:de |
|
||||||
| N3 | R1 | pnt |
|
| N3 | R1 | pnt |
|
||||||
When updating places
|
When updating places
|
||||||
| osm | class | type | name+name:de | admin | geometry |
|
| osm | class | type | name+name:de | admin | geometry |
|
||||||
@@ -126,8 +128,43 @@ Feature: Updates of linked places
|
|||||||
Then placex contains
|
Then placex contains
|
||||||
| object | linked_place_id | name+name:de |
|
| object | linked_place_id | name+name:de |
|
||||||
| N3 | R1 | newname |
|
| N3 | R1 | newname |
|
||||||
|
And placex contains
|
||||||
|
| object | linked_place_id | name+_place_name:de |
|
||||||
| R1 | - | newname |
|
| R1 | - | newname |
|
||||||
|
|
||||||
|
Scenario: Update linking relation when linkee name is deleted
|
||||||
|
Given the places
|
||||||
|
| osm | class | type | name | admin | geometry |
|
||||||
|
| R1 | boundary | administrative | rel | 8 | poly-area:0.1 |
|
||||||
|
And the places
|
||||||
|
| osm | class | type | name | admin | geometry |
|
||||||
|
| N3 | place | city | pnt | 30 | 0.00001 0 |
|
||||||
|
And the relations
|
||||||
|
| id | members |
|
||||||
|
| 1 | N3:label |
|
||||||
|
When importing
|
||||||
|
Then placex contains
|
||||||
|
| object | linked_place_id | name+_place_name | name+name |
|
||||||
|
| R1 | - | pnt | rel |
|
||||||
|
And placex contains
|
||||||
|
| object | linked_place_id | name+name |
|
||||||
|
| N3 | R1 | pnt |
|
||||||
|
When sending search query "pnt"
|
||||||
|
Then results contain
|
||||||
|
| osm |
|
||||||
|
| R1 |
|
||||||
|
When updating places
|
||||||
|
| osm | class | type | name+name:de | admin | geometry |
|
||||||
|
| N3 | place | city | depnt | 30 | 0.00001 0 |
|
||||||
|
Then placex contains
|
||||||
|
| object | linked_place_id | name+name:de |
|
||||||
|
| N3 | R1 | depnt |
|
||||||
|
And placex contains
|
||||||
|
| object | linked_place_id | name+_place_name:de | name+name |
|
||||||
|
| R1 | - | depnt | rel |
|
||||||
|
When sending search query "pnt"
|
||||||
|
Then exactly 0 results are returned
|
||||||
|
|
||||||
Scenario: Updating linkee extratags keeps linker's extratags
|
Scenario: Updating linkee extratags keeps linker's extratags
|
||||||
Given the named places
|
Given the named places
|
||||||
| osm | class | type | extra+wikidata | admin | geometry |
|
| osm | class | type | extra+wikidata | admin | geometry |
|
||||||
|
|||||||
@@ -62,8 +62,6 @@ class GenericResponse:
|
|||||||
|
|
||||||
if errorcode == 200 and fmt != 'debug':
|
if errorcode == 200 and fmt != 'debug':
|
||||||
getattr(self, '_parse_' + fmt)()
|
getattr(self, '_parse_' + fmt)()
|
||||||
else:
|
|
||||||
print("Bad response: ", page)
|
|
||||||
|
|
||||||
def _parse_json(self):
|
def _parse_json(self):
|
||||||
m = re.fullmatch(r'([\w$][^(]*)\((.*)\)', self.page)
|
m = re.fullmatch(r'([\w$][^(]*)\((.*)\)', self.page)
|
||||||
@@ -74,13 +72,14 @@ class GenericResponse:
|
|||||||
self.header['json_func'] = m.group(1)
|
self.header['json_func'] = m.group(1)
|
||||||
self.result = json.JSONDecoder(object_pairs_hook=OrderedDict).decode(code)
|
self.result = json.JSONDecoder(object_pairs_hook=OrderedDict).decode(code)
|
||||||
if isinstance(self.result, OrderedDict):
|
if isinstance(self.result, OrderedDict):
|
||||||
self.result = [self.result]
|
if 'error' in self.result:
|
||||||
|
self.result = []
|
||||||
|
else:
|
||||||
|
self.result = [self.result]
|
||||||
|
|
||||||
def _parse_geojson(self):
|
def _parse_geojson(self):
|
||||||
self._parse_json()
|
self._parse_json()
|
||||||
if 'error' in self.result[0]:
|
if self.result:
|
||||||
self.result = []
|
|
||||||
else:
|
|
||||||
self.result = list(map(_geojson_result_to_json_result, self.result[0]['features']))
|
self.result = list(map(_geojson_result_to_json_result, self.result[0]['features']))
|
||||||
|
|
||||||
def _parse_geocodejson(self):
|
def _parse_geocodejson(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user