From 345637290b85dc24f5023f07d919ff5d8dc486e9 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Tue, 23 Nov 2021 20:04:50 +0100 Subject: [PATCH] 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. --- lib-php/SearchDescription.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib-php/SearchDescription.php b/lib-php/SearchDescription.php index 4962d9ff..be5623af 100644 --- a/lib-php/SearchDescription.php +++ b/lib-php/SearchDescription.php @@ -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'; -- 2.39.5