]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Thu, 25 Nov 2021 07:41:57 +0000 (08:41 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Thu, 25 Nov 2021 07:41:57 +0000 (08:41 +0100)
lib-php/SearchDescription.php
lib-sql/tiger_import_finish.sql
nominatim/tools/migration.py
nominatim/version.py
settings/address-levels.json
test/bdd/db/import/placex.feature

index 4962d9ff8c91a0e31142924422f8d081346a8057..be5623afcd3170ec58662b7e7c9ea6f8258adb83 100644 (file)
@@ -591,8 +591,7 @@ class SearchDescription
             $sChildHnr .= '    AND housenumber ~* E'.$sHouseNumberRegex;
             // Interpolations on streets and places.
             if (preg_match('/^[0-9]+$/', $this->sHouseNumber)) {
-                $sIpolHnr = 'SELECT * FROM location_property_osmline ';
-                $sIpolHnr .= 'WHERE parent_place_id = search_name.place_id ';
+                $sIpolHnr = 'WHERE parent_place_id = search_name.place_id ';
                 $sIpolHnr .= '  AND startnumber is not NULL';
                 $sIpolHnr .= '    AND '.$this->sHouseNumber.'>=startnumber ';
                 $sIpolHnr .= '    AND '.$this->sHouseNumber.'<=endnumber ';
@@ -606,7 +605,11 @@ class SearchDescription
             $sSql = '(CASE WHEN address_rank = 30 THEN EXISTS('.$sSelfHnr.') ';
             $sSql .= ' ELSE EXISTS('.$sChildHnr.') ';
             if ($sIpolHnr) {
-                $sSql .= 'OR EXISTS('.$sIpolHnr.') ';
+                $sSql .= 'OR EXISTS(SELECT * FROM location_property_osmline '.$sIpolHnr.') ';
+                if (CONST_Use_US_Tiger_Data) {
+                    $sSql .= "OR (country_code = 'us' AND ";
+                    $sSql .= '    EXISTS(SELECT * FROM location_property_tiger '.$sIpolHnr.')) ';
+                }
             }
             $sSql .= 'END) DESC';
 
index 1a9dc2ddf1da980af4ebfa76856e62c47e9c5f87..fb76477c3db83ac9ecd480b8362dcdbba3899663 100644 (file)
@@ -1,6 +1,10 @@
 --index only on parent_place_id
 CREATE INDEX IF NOT EXISTS idx_location_property_tiger_parent_place_id_imp
-  ON location_property_tiger_import (parent_place_id) {{db.tablespace.aux_index}};
+  ON location_property_tiger_import (parent_place_id)
+{% if postgres.has_index_non_key_column %}
+  INCLUDE (startnumber, endnumber)
+{% endif %}
+  {{db.tablespace.aux_index}};
 CREATE UNIQUE INDEX IF NOT EXISTS idx_location_property_tiger_place_id_imp
   ON location_property_tiger_import (place_id) {{db.tablespace.aux_index}};
 
index d7faca31f1f431b61383825ad105bee4163a6a07..87febacc114c28b971f004ad6fe778b4810b3f1f 100644 (file)
@@ -192,3 +192,20 @@ def install_legacy_tokenizer(conn, config, **_):
                                                        module_name='legacy')
 
         tokenizer.migrate_database(config)
+
+
+@_migration(4, 0, 99, 0)
+def create_tiger_housenumber_index(conn, _, **_):
+    """ Create idx_location_property_tiger_parent_place_id with included
+        house number.
+
+        The inclusion is needed for efficient lookup of housenumbers in
+        full address searches.
+    """
+    if conn.server_version_tuple() >= (11, 0, 0):
+        with conn.cursor() as cur:
+            cur.execute(""" CREATE INDEX IF NOT EXISTS
+                                idx_location_property_tiger_housenumber_migrated
+                            ON location_property_tiger
+                            USING btree(parent_place_id)
+                            INCLUDE (startnumber, endnumber) """)
index dcfc161eac5c0dad27e6ba73d082c7671cf9db9a..06a3e97113692fd3c43e50caa598c71ae46017c7 100644 (file)
@@ -9,8 +9,16 @@ Version information for Nominatim.
 # The database patch level tracks important changes between releases
 # and must always be increased when there is a change to the database or code
 # that requires a migration.
+#
+# When adding a migration on the development branch, raise the patch level
+# to 99 to make sure that the migration is applied when updating from a
+# patch release to the next minor version. Patch releases usually shouldn't
+# have migrations in them. When they are needed, then make sure that the
+# migration can reapplied and set the migration version to the appropriate
+# patch level when cherry-picking the commit with the migration.
+#
 # Released versions always have a database patch level of 0.
-NOMINATIM_VERSION = (4, 0, 0, 0)
+NOMINATIM_VERSION = (4, 0, 99, 1)
 
 POSTGRESQL_REQUIRED_VERSION = (9, 5)
 POSTGIS_REQUIRED_VERSION = (2, 2)
index fc31a6542e3f6927ee5edde542a78f3f4b84d9b8..67bca991929d6e1974e52d98994f414b685b1651 100644 (file)
@@ -82,7 +82,7 @@
           "" : [20, 0]
       },
       "highway" : {
-          "" : 26,
+          "" : 30,
           "service" : 27,
           "cycleway" : 27,
           "path" : 27,
           "primary_link" : 27,
           "trunk_link" : 27,
           "secondary_link" : 27,
-          "tertiary_link" : 27
+          "tertiary_link" : 27,
+          "residential" : 26,
+          "track" : 26,
+          "unclassified" : 26,
+          "tertiary" : 26,
+          "secondary" : 26,
+          "primary" : 26,
+          "living_street" : 26,
+          "trunk" : 26,
+          "motorway" : 26,
+          "pedestrian" : 26,
+          "road" : 26,
+          "construction" : 26
       },
       "mountain_pass" : {
           "" : [20, 0]
index db36ab58b3e52c7f815ce2addfef7a111c6c3c26..9b208775703fad191879500cd96398574d84fbc7 100644 (file)
@@ -176,7 +176,7 @@ Feature: Import into placex
           | W3     | 26          | 26 |
           | W4     | 26          | 26 |
           | W5     | 26          | 26 |
-          | W6     | 26          | 26 |
+          | W6     | 30          | 30 |
 
     Scenario: rank and inclusion of landuses
         Given the named places