]> git.openstreetmap.org Git - nominatim.git/blobdiff - lib-sql/functions/address_lookup.sql
Merge pull request #2757 from lonvia/filter-postcodes
[nominatim.git] / lib-sql / functions / address_lookup.sql
index eded2f7c468bcc1cf624bf2c30418cba6cd444b2..2bbfcd5c03c6296ff06191a00571c7b11f5da25a 100644 (file)
@@ -43,8 +43,7 @@ BEGIN
     END IF;
   END LOOP;
 
-  -- change this code below
-  -- anything will do as a fallback - just take the first name type thing there is
+  -- as a fallback - take the last element since it is the default name
   RETURN trim((avals(name))[array_length(avals(name), 1)]);
 END;
 $$
@@ -57,7 +56,6 @@ CREATE OR REPLACE FUNCTION get_address_by_language(for_place_id BIGINT,
                                                    languagepref TEXT[])
   RETURNS TEXT
   AS $$
-  -- ARRAY['zh','default','brand','official_name:zh','short_name:zh','official_name','short_name','ref','type']
 DECLARE
   result TEXT[];
   currresult TEXT;
@@ -322,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;