WHERE geometry && feature
AND is_relevant_geometry(ST_Relate(geometry, feature), ST_GeometryType(feature))
AND rank_address < maxrank
+ -- Postcodes currently still use rank_search to define for which
+ -- features they are relevant.
+ AND not (rank_address in (5, 11) and rank_search > maxrank)
GROUP BY place_id, keywords, rank_address, rank_search, isguess, postcode, centroid
LOOP
RETURN NEXT r;
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;