-- start
IF in_partition = -partition- THEN
FOR r IN
- SELECT place_id, keywords, rank_address, rank_search, ST_Distance(point, centroid) as distance FROM (
+ SELECT place_id, keywords, rank_address, rank_search, min(ST_Distance(point, centroid)) as distance FROM (
SELECT * FROM location_area_large_-partition- WHERE ST_Contains(geometry, point) and rank_search < maxrank
UNION ALL
SELECT * FROM location_area_country WHERE ST_Contains(geometry, point) and rank_search < maxrank
) as location_area
+ GROUP BY place_id, keywords, rank_address, rank_search, isguess, centroid
ORDER BY rank_address desc, isin_tokens && keywords desc, isguess asc,
ST_Distance(point, centroid) *
CASE
create or replace function insertSearchName(
in_partition INTEGER, in_place_id integer, in_country_code VARCHAR(2),
in_name_vector INTEGER[], in_nameaddress_vector INTEGER[],
- in_rank_search INTEGER, in_rank_address INTEGER,
+ in_rank_search INTEGER, in_rank_address INTEGER, in_importance FLOAT,
in_centroid GEOMETRY) RETURNS BOOLEAN AS $$
DECLARE
BEGIN
DELETE FROM search_name WHERE place_id = in_place_id;
- INSERT INTO search_name values (in_place_id, in_rank_search, in_rank_address, 0, in_country_code,
+ INSERT INTO search_name values (in_place_id, in_rank_search, in_rank_address, in_importance, in_country_code,
in_name_vector, in_nameaddress_vector, in_centroid);
IF in_rank_search <= 4 THEN
DELETE FROM search_name_country WHERE place_id = in_place_id;
- INSERT INTO search_name_country values (in_place_id, in_rank_search, in_rank_address, 0, in_country_code,
+ INSERT INTO search_name_country values (in_place_id, in_rank_search, in_rank_address, in_importance, in_country_code,
in_name_vector, in_nameaddress_vector, in_centroid);
RETURN TRUE;
END IF;