X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/c7472662a69eb6074a58917dbde71cf2b27e8d6e..340dfb723cdc616784cbe25a00801b61ab6839ad:/sql/partition-functions.src.sql diff --git a/sql/partition-functions.src.sql b/sql/partition-functions.src.sql index 8e54868b..703c08af 100644 --- a/sql/partition-functions.src.sql +++ b/sql/partition-functions.src.sql @@ -47,6 +47,9 @@ BEGIN 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; @@ -72,8 +75,6 @@ BEGIN 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; @@ -89,7 +90,7 @@ BEGIN 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 @@ -178,7 +179,7 @@ BEGIN 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; @@ -226,8 +227,8 @@ BEGIN 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;