mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
Merge pull request #2529 from lonvia/sort-street-results-by-tiger-housenumber
Take tiger housenumber into account when ranking street results
This commit is contained in:
@@ -591,8 +591,7 @@ class SearchDescription
|
|||||||
$sChildHnr .= ' AND housenumber ~* E'.$sHouseNumberRegex;
|
$sChildHnr .= ' AND housenumber ~* E'.$sHouseNumberRegex;
|
||||||
// Interpolations on streets and places.
|
// Interpolations on streets and places.
|
||||||
if (preg_match('/^[0-9]+$/', $this->sHouseNumber)) {
|
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 startnumber is not NULL';
|
||||||
$sIpolHnr .= ' AND '.$this->sHouseNumber.'>=startnumber ';
|
$sIpolHnr .= ' AND '.$this->sHouseNumber.'>=startnumber ';
|
||||||
$sIpolHnr .= ' AND '.$this->sHouseNumber.'<=endnumber ';
|
$sIpolHnr .= ' AND '.$this->sHouseNumber.'<=endnumber ';
|
||||||
@@ -606,7 +605,11 @@ class SearchDescription
|
|||||||
$sSql = '(CASE WHEN address_rank = 30 THEN EXISTS('.$sSelfHnr.') ';
|
$sSql = '(CASE WHEN address_rank = 30 THEN EXISTS('.$sSelfHnr.') ';
|
||||||
$sSql .= ' ELSE EXISTS('.$sChildHnr.') ';
|
$sSql .= ' ELSE EXISTS('.$sChildHnr.') ';
|
||||||
if ($sIpolHnr) {
|
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';
|
$sSql .= 'END) DESC';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
--index only on parent_place_id
|
--index only on parent_place_id
|
||||||
CREATE INDEX IF NOT EXISTS idx_location_property_tiger_parent_place_id_imp
|
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
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_location_property_tiger_place_id_imp
|
||||||
ON location_property_tiger_import (place_id) {{db.tablespace.aux_index}};
|
ON location_property_tiger_import (place_id) {{db.tablespace.aux_index}};
|
||||||
|
|
||||||
|
|||||||
@@ -192,3 +192,20 @@ def install_legacy_tokenizer(conn, config, **_):
|
|||||||
module_name='legacy')
|
module_name='legacy')
|
||||||
|
|
||||||
tokenizer.migrate_database(config)
|
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) """)
|
||||||
|
|||||||
@@ -9,8 +9,16 @@ Version information for Nominatim.
|
|||||||
# The database patch level tracks important changes between releases
|
# The database patch level tracks important changes between releases
|
||||||
# and must always be increased when there is a change to the database or code
|
# and must always be increased when there is a change to the database or code
|
||||||
# that requires a migration.
|
# 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.
|
# 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)
|
POSTGRESQL_REQUIRED_VERSION = (9, 5)
|
||||||
POSTGIS_REQUIRED_VERSION = (2, 2)
|
POSTGIS_REQUIRED_VERSION = (2, 2)
|
||||||
|
|||||||
Reference in New Issue
Block a user