From: Sarah Hoffmann Date: Fri, 16 Nov 2018 23:35:38 +0000 (+0100) Subject: Keep matches without house number X-Git-Tag: v3.3.0~73 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/85f32d6c0f47a73bb173a0b2f59b65da734c586c?ds=sidebyside;hp=--cc Keep matches without house number Now that we have result ranking, we can keep the street results for housenumber searches and reuse them in the next group round if required. Also fixes an issue where postcode and housenumber are in the query and one of them is wrong. Fixes #1200. --- 85f32d6c0f47a73bb173a0b2f59b65da734c586c diff --git a/lib/SearchDescription.php b/lib/SearchDescription.php index 204a7358..bf32df96 100644 --- a/lib/SearchDescription.php +++ b/lib/SearchDescription.php @@ -448,13 +448,17 @@ class SearchDescription //now search for housenumber, if housenumber provided if ($this->sHouseNumber && !empty($aResults)) { - $aNamedPlaceIDs = $aResults; - $aResults = $this->queryHouseNumber($oDB, $aNamedPlaceIDs); + // Downgrade the rank of the street results, they are missing + // the housenumber. + foreach ($aResults as $oRes) { + $oRes->iResultRank++; + } + + $aHnResults = $this->queryHouseNumber($oDB, $aResults); - if (empty($aResults) && $this->looksLikeFullAddress()) { - $aResults = $aNamedPlaceIDs; - foreach ($aResults as $oRes) { - $oRes->iResultRank++; + if (!empty($aHnResults)) { + foreach ($aHnResults as $oRes) { + $aResults[$oRes->iId] = $oRes; } } }