From: Brian Quinion Date: Fri, 11 Mar 2011 14:01:18 +0000 (+0000) Subject: preserve importance in search_name X-Git-Tag: v2.0.0~165 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/46ae96b608437f428fc310912268b0ab7190fc6f preserve importance in search_name --- diff --git a/sql/partitions.src.sql b/sql/partitions.src.sql index 389d7c7f..e31eadff 100644 --- a/sql/partitions.src.sql +++ b/sql/partitions.src.sql @@ -56,11 +56,12 @@ BEGIN -- 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 @@ -186,18 +187,18 @@ LANGUAGE plpgsql; 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;