forked from hans/Nominatim
take Tiger housenumbers into account when ranking street results
Queries with a housenumber need to rank streets higher that have the requested housenumber attached. We already do that for ordinary housenumber objects and for interpolations. This adds support for Tiger housenumbers as well. Fixes #2501.
This commit is contained in:
@@ -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';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user