mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-11 21:34:06 +00:00
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,35 +28,38 @@ 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
|
FROM placex
|
||||||
FROM placex
|
WHERE ST_Covers(geometry, p.centroid)
|
||||||
WHERE ST_Covers(geometry, p.centroid)
|
and geometry && p.centroid
|
||||||
and geometry && p.centroid
|
and placex.address is not null
|
||||||
and placex.address is not null
|
and (placex.address ? 'housenumber' or placex.address ? 'street' or placex.address ? 'place')
|
||||||
and (placex.address ? 'housenumber' or placex.address ? 'street' or placex.address ? 'place')
|
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
|
-- See if we can inherit addtional address tags from an interpolation.
|
||||||
result.address := p.address;
|
-- These will become permanent.
|
||||||
-- See if we can inherit addtional address tags from an interpolation.
|
FOR location IN
|
||||||
-- These will become permanent.
|
SELECT (address - 'interpolation'::text - 'housenumber'::text) as address
|
||||||
FOR location IN
|
FROM place, planet_osm_ways w
|
||||||
SELECT (address - 'interpolation'::text - 'housenumber'::text) as address
|
WHERE place.osm_type = 'W' and place.address ? 'interpolation'
|
||||||
FROM place, planet_osm_ways w
|
and place.geometry && p.geometry
|
||||||
WHERE place.osm_type = 'W' and place.address ? 'interpolation'
|
and place.osm_id = w.id
|
||||||
and place.geometry && p.geometry
|
and p.osm_id = any(w.nodes)
|
||||||
and place.osm_id = w.id
|
LOOP
|
||||||
and p.osm_id = any(w.nodes)
|
result.address := location.address || result.address;
|
||||||
LOOP
|
END LOOP;
|
||||||
result.address := location.address || result.address;
|
END IF;
|
||||||
END LOOP;
|
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- remove internal and derived names
|
-- remove internal and derived names
|
||||||
@@ -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