]> git.openstreetmap.org Git - nominatim.git/blobdiff - sql/partition-functions.src.sql
Add link to discussions when creating new issue
[nominatim.git] / sql / partition-functions.src.sql
index 8e54868b664bbbd108d2e371001a3b55ce1c4ca5..703c08afd2ae36f1776aff6a1f7d49e0eb14e4ca 100644 (file)
@@ -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;