X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/9908c93d4cec91b5109d4fbc83dde18b5076350f..8f0c628310e9ad4160eb995f3ba53afa791a3ffc:/lib/SearchDescription.php diff --git a/lib/SearchDescription.php b/lib/SearchDescription.php index 204a7358..f5179ce1 100644 --- a/lib/SearchDescription.php +++ b/lib/SearchDescription.php @@ -237,7 +237,8 @@ class SearchDescription $oSearch->sHouseNumber = $oSearchTerm->sToken; // sanity check: if the housenumber is not mainly made // up of numbers, add a penalty - if (preg_match_all('/[^0-9]/', $oSearch->sHouseNumber, $aMatches) > 2) { + if (preg_match('/\\d/', $oSearch->sHouseNumber) === 0 + || preg_match_all('/[^0-9]/', $oSearch->sHouseNumber, $aMatches) > 2) { $oSearch->iSearchRank++; } if (empty($oSearchTerm->iId)) { @@ -448,13 +449,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; } } }