mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-12 05:44:06 +00:00
Ensure that postcode relations are used in addresses
Postcode nodes are normally thrown away as they only play a role for computing artifical postcodes. However, if we have a postcode area this still should take part of the address. Fixes #1330.
This commit is contained in:
@@ -2318,6 +2318,7 @@ DECLARE
|
|||||||
searchhousename HSTORE;
|
searchhousename HSTORE;
|
||||||
searchrankaddress INTEGER;
|
searchrankaddress INTEGER;
|
||||||
searchpostcode TEXT;
|
searchpostcode TEXT;
|
||||||
|
postcode_isaddress BOOL;
|
||||||
searchclass TEXT;
|
searchclass TEXT;
|
||||||
searchtype TEXT;
|
searchtype TEXT;
|
||||||
countryname HSTORE;
|
countryname HSTORE;
|
||||||
@@ -2325,6 +2326,8 @@ BEGIN
|
|||||||
-- The place ein question might not have a direct entry in place_addressline.
|
-- The place ein question might not have a direct entry in place_addressline.
|
||||||
-- Look for the parent of such places then and save if in for_place_id.
|
-- Look for the parent of such places then and save if in for_place_id.
|
||||||
|
|
||||||
|
postcode_isaddress := true;
|
||||||
|
|
||||||
-- first query osmline (interpolation lines)
|
-- first query osmline (interpolation lines)
|
||||||
IF in_housenumber >= 0 THEN
|
IF in_housenumber >= 0 THEN
|
||||||
SELECT parent_place_id, country_code, in_housenumber::text, 30, postcode,
|
SELECT parent_place_id, country_code, in_housenumber::text, 30, postcode,
|
||||||
@@ -2441,7 +2444,10 @@ BEGIN
|
|||||||
searchcountrycode := location.country_code;
|
searchcountrycode := location.country_code;
|
||||||
END IF;
|
END IF;
|
||||||
IF location.type in ('postcode', 'postal_code') THEN
|
IF location.type in ('postcode', 'postal_code') THEN
|
||||||
location.isaddress := FALSE;
|
postcode_isaddress := false;
|
||||||
|
IF location.osm_type != 'R' THEN
|
||||||
|
location.isaddress := FALSE;
|
||||||
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
countrylocation := ROW(location.place_id, location.osm_type, location.osm_id,
|
countrylocation := ROW(location.place_id, location.osm_type, location.osm_id,
|
||||||
location.name, location.class, location.type,
|
location.name, location.class, location.type,
|
||||||
@@ -2485,7 +2491,7 @@ BEGIN
|
|||||||
|
|
||||||
IF searchpostcode IS NOT NULL THEN
|
IF searchpostcode IS NOT NULL THEN
|
||||||
location := ROW(null, null, null, hstore('ref', searchpostcode), 'place',
|
location := ROW(null, null, null, hstore('ref', searchpostcode), 'place',
|
||||||
'postcode', null, true, true, 5, 0)::addressline;
|
'postcode', null, false, postcode_isaddress, 5, 0)::addressline;
|
||||||
RETURN NEXT location;
|
RETURN NEXT location;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user