-- --- Return the record for the base entry.
+ current_rank_address := 1000;
FOR location IN
SELECT placex.place_id, osm_type, osm_id, name,
coalesce(extratags->'linked_place', extratags->'place') as place_type,
FOR location IN
SELECT placex.place_id, osm_type, osm_id, name, class, type,
coalesce(extratags->'linked_place', extratags->'place') as place_type,
- admin_level, fromarea, isaddress,
+ admin_level, fromarea, isaddress and linked_place_id is NULL as isaddress,
CASE WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
distance, country_code, postcode
FROM place_addressline join placex on (address_place_id = placex.place_id)
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;