From: Sarah Hoffmann Date: Sun, 14 Apr 2019 09:20:03 +0000 (+0200) Subject: Ensure that postcode relations are used in addresses X-Git-Tag: v3.3.0~16 X-Git-Url: https://git.openstreetmap.org/nominatim.git/commitdiff_plain/403ee260f676df297646f2ac50bd10e7863e7e6b 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. --- diff --git a/sql/functions.sql b/sql/functions.sql index 73790353..8ecb8c2c 100644 --- a/sql/functions.sql +++ b/sql/functions.sql @@ -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;