X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/55b7edbab545346f7caa0cf9c708f18f74e16013..b8385fc52de32231e64789cfbf56a246b18b38d8:/lib-sql/functions/address_lookup.sql diff --git a/lib-sql/functions/address_lookup.sql b/lib-sql/functions/address_lookup.sql index 3e25c6fc..312aa9b2 100644 --- a/lib-sql/functions/address_lookup.sql +++ b/lib-sql/functions/address_lookup.sql @@ -43,8 +43,8 @@ BEGIN END IF; END LOOP; - -- anything will do as a fallback - just take the first name type thing there is - RETURN trim((avals(name))[1]); + -- as a fallback - take the last element since it is the default name + RETURN trim((avals(name))[array_length(avals(name), 1)]); END; $$ LANGUAGE plpgsql IMMUTABLE; @@ -320,6 +320,11 @@ BEGIN location := ROW(null, null, null, hstore('ref', place.postcode), 'place', 'postcode', null, null, false, true, 5, 0)::addressline; RETURN NEXT location; + ELSEIF place.address is not null and place.address ? 'postcode' + and not place.address->'postcode' SIMILAR TO '%(,|;)%' THEN + location := ROW(null, null, null, hstore('ref', place.address->'postcode'), 'place', + 'postcode', null, null, false, true, 5, 0)::addressline; + RETURN NEXT location; END IF; RETURN;