mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-16 05:18:00 +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;
|
||||
searchrankaddress INTEGER;
|
||||
searchpostcode TEXT;
|
||||
postcode_isaddress BOOL;
|
||||
searchclass TEXT;
|
||||
searchtype TEXT;
|
||||
countryname HSTORE;
|
||||
@@ -2325,6 +2326,8 @@ BEGIN
|
||||
-- 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.
|
||||
|
||||
postcode_isaddress := true;
|
||||
|
||||
-- first query osmline (interpolation lines)
|
||||
IF in_housenumber >= 0 THEN
|
||||
SELECT parent_place_id, country_code, in_housenumber::text, 30, postcode,
|
||||
@@ -2441,7 +2444,10 @@ BEGIN
|
||||
searchcountrycode := location.country_code;
|
||||
END IF;
|
||||
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;
|
||||
countrylocation := ROW(location.place_id, location.osm_type, location.osm_id,
|
||||
location.name, location.class, location.type,
|
||||
@@ -2485,7 +2491,7 @@ BEGIN
|
||||
|
||||
IF searchpostcode IS NOT NULL THEN
|
||||
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;
|
||||
END IF;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user