]> git.openstreetmap.org Git - nominatim.git/blobdiff - sql/partition-functions.src.sql
Merge pull request #2119 from mtmail/check-import-finished-when-tables-droped
[nominatim.git] / sql / partition-functions.src.sql
index 63548ab20ec6a1531f0bce77ef8e32c9338a9840..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;
@@ -87,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
@@ -176,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;
@@ -224,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;