FOR item IN
SELECT (get_addr_tag_rank(key, country)).*, key, name FROM
(SELECT skeys(address) as key, svals(address) as name) x
- WHERE key not in ('country', 'postcode', 'housenumber',
- 'conscriptionnumber', 'streetnumber')
LOOP
IF item.from_rank is null THEN
CONTINUE;
AND rank_address between item.from_rank and item.to_rank
AND word_ids_from_name(item.name) && keywords
GROUP BY place_id, keywords, rank_address, rank_search, isguess, postcode, centroid
- ORDER BY ST_Intersects(ST_Collect(geometry), feature), distance LIMIT 1;
+ ORDER BY bool_or(ST_Intersects(geometry, feature)), distance LIMIT 1;
IF r.place_id is null THEN
-- If we cannot find a place for the term, just return the
-- search term for the given name. That ensures that the address
INTO parent
WHERE name_vector && isin_token
AND centroid && ST_Expand(point, 0.015)
- AND search_rank between 26 and 27
+ AND address_rank between 26 and 27
ORDER BY ST_Distance(centroid, point) ASC limit 1;
RETURN parent;
END IF;
IF in_partition = -partition- THEN
DELETE FROM search_name_-partition- values WHERE place_id = in_place_id;
IF in_rank_address > 0 THEN
- INSERT INTO search_name_-partition- (place_id, search_rank, address_rank, name_vector, centroid)
- values (in_place_id, in_rank_search, in_rank_address, in_name_vector, in_geometry);
+ INSERT INTO search_name_-partition- (place_id, address_rank, name_vector, centroid)
+ values (in_place_id, in_rank_address, in_name_vector, in_geometry);
END IF;
RETURN TRUE;
END IF;