forked from hans/Nominatim
keep inherited address parts after indexing
The inherited housenumber is needed for display output. We can't take the one from the housenumber field because it is already normalized. Remove the inherited address only when reindexing. Fixes #2683.
This commit is contained in:
@@ -28,11 +28,14 @@ DECLARE
|
|||||||
result prepare_update_info;
|
result prepare_update_info;
|
||||||
extra_names HSTORE;
|
extra_names HSTORE;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
IF not p.address ? '_inherited' THEN
|
||||||
|
result.address := p.address;
|
||||||
|
END IF;
|
||||||
|
|
||||||
-- For POI nodes, check if the address should be derived from a surrounding
|
-- For POI nodes, check if the address should be derived from a surrounding
|
||||||
-- building.
|
-- building.
|
||||||
IF p.rank_search < 30 OR p.osm_type != 'N' THEN
|
IF p.rank_search = 30 AND p.osm_type = 'N' THEN
|
||||||
result.address := p.address;
|
IF p.address is null THEN
|
||||||
ELSEIF p.address is null THEN
|
|
||||||
-- The additional && condition works around the misguided query
|
-- The additional && condition works around the misguided query
|
||||||
-- planner of postgis 3.0.
|
-- planner of postgis 3.0.
|
||||||
SELECT placex.address || hstore('_inherited', '') INTO result.address
|
SELECT placex.address || hstore('_inherited', '') INTO result.address
|
||||||
@@ -44,7 +47,6 @@ BEGIN
|
|||||||
and rank_search = 30 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')
|
and rank_search = 30 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
ELSE
|
ELSE
|
||||||
result.address := p.address;
|
|
||||||
-- See if we can inherit addtional address tags from an interpolation.
|
-- See if we can inherit addtional address tags from an interpolation.
|
||||||
-- These will become permanent.
|
-- These will become permanent.
|
||||||
FOR location IN
|
FOR location IN
|
||||||
@@ -58,6 +60,7 @@ BEGIN
|
|||||||
result.address := location.address || result.address;
|
result.address := location.address || result.address;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
END IF;
|
END IF;
|
||||||
|
END IF;
|
||||||
|
|
||||||
-- remove internal and derived names
|
-- remove internal and derived names
|
||||||
result.address := result.address - '_unlisted_place'::TEXT;
|
result.address := result.address - '_unlisted_place'::TEXT;
|
||||||
@@ -984,15 +987,6 @@ BEGIN
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
NEW.token_info := token_strip_info(NEW.token_info);
|
NEW.token_info := token_strip_info(NEW.token_info);
|
||||||
-- If the address was inherited from a surrounding building,
|
|
||||||
-- do not add it permanently to the table.
|
|
||||||
IF NEW.address ? '_inherited' THEN
|
|
||||||
IF NEW.address ? '_unlisted_place' THEN
|
|
||||||
NEW.address := hstore('_unlisted_place', NEW.address->'_unlisted_place');
|
|
||||||
ELSE
|
|
||||||
NEW.address := null;
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END IF;
|
END IF;
|
||||||
|
|||||||
@@ -376,6 +376,10 @@ Feature: Parenting of objects
|
|||||||
| N1 | W3 | 3 |
|
| N1 | W3 | 3 |
|
||||||
| N2 | W3 | 3 |
|
| N2 | W3 | 3 |
|
||||||
| N3 | W3 | 3 |
|
| N3 | W3 | 3 |
|
||||||
|
When sending geocodejson search query "3, foo" with address
|
||||||
|
Then results contain
|
||||||
|
| housenumber |
|
||||||
|
| 3 |
|
||||||
|
|
||||||
Scenario: POIs don't inherit from streets
|
Scenario: POIs don't inherit from streets
|
||||||
Given the scene building-on-street-corner
|
Given the scene building-on-street-corner
|
||||||
|
|||||||
Reference in New Issue
Block a user