]> git.openstreetmap.org Git - nominatim.git/commitdiff
introduce index for finding surrounding buildings
authorSarah Hoffmann <lonvia@denofr.de>
Fri, 23 Apr 2021 15:02:47 +0000 (17:02 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Fri, 30 Apr 2021 09:30:51 +0000 (11:30 +0200)
lib-sql/functions/placex_triggers.sql
lib-sql/tables.sql

index 5ffd4e4bc23615322866ec9d30b180d1f6e2ad59..dba301cb213edd0c2f17ebb8da5ed0e890116e75 100644 (file)
@@ -26,8 +26,9 @@ BEGIN
       FROM placex
      WHERE ST_Covers(geometry, p.centroid)
            and geometry && p.centroid
       FROM placex
      WHERE ST_Covers(geometry, p.centroid)
            and geometry && p.centroid
+           and placex.address is not null
            and (placex.address ? 'housenumber' or placex.address ? 'street' or placex.address ? 'place')
            and (placex.address ? 'housenumber' or placex.address ? 'street' or placex.address ? 'place')
-           and rank_search > 28 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')
+           and rank_search = 30 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')
      LIMIT 1;
     RAISE WARNING 'other address for % %: % (%)', p.osm_type, p.osm_id, address, p.centroid;
   END IF;
      LIMIT 1;
     RAISE WARNING 'other address for % %: % (%)', p.osm_type, p.osm_id, address, p.centroid;
   END IF;
index c254e2d43b848d0fe6bd43090f165ce6b317062c..9732c26cb3b82623e2fe5dd799d94fe24492b226 100644 (file)
@@ -154,6 +154,10 @@ CREATE INDEX idx_placex_osmid ON placex USING BTREE (osm_type, osm_id) {{db.tabl
 CREATE INDEX idx_placex_linked_place_id ON placex USING BTREE (linked_place_id) {{db.tablespace.address_index}} WHERE linked_place_id IS NOT NULL;
 CREATE INDEX idx_placex_rank_search ON placex USING BTREE (rank_search, geometry_sector) {{db.tablespace.address_index}};
 CREATE INDEX idx_placex_geometry ON placex USING GIST (geometry) {{db.tablespace.search_index}};
 CREATE INDEX idx_placex_linked_place_id ON placex USING BTREE (linked_place_id) {{db.tablespace.address_index}} WHERE linked_place_id IS NOT NULL;
 CREATE INDEX idx_placex_rank_search ON placex USING BTREE (rank_search, geometry_sector) {{db.tablespace.address_index}};
 CREATE INDEX idx_placex_geometry ON placex USING GIST (geometry) {{db.tablespace.search_index}};
+CREATE INDEX idx_placex_geometry_buildings ON placex
+  USING GIST (geometry) {{db.tablespace.search_index}}
+  WHERE address is not null and rank_search = 30
+        and ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon');
 CREATE INDEX idx_placex_geometry_placenode ON placex
   USING GIST (geometry) {{db.tablespace.search_index}}
   WHERE osm_type = 'N' and rank_search < 26
 CREATE INDEX idx_placex_geometry_placenode ON placex
   USING GIST (geometry) {{db.tablespace.search_index}}
   WHERE osm_type = 'N' and rank_search < 26