X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/db3ced17bbfff00411f506d8c84419c875959d5e..86eeb4d2eddaa6c409f542169780f59dc31ffc1b:/lib-php/Result.php?ds=sidebyside diff --git a/lib-php/Result.php b/lib-php/Result.php index a67c2fe4..774b7ca6 100644 --- a/lib-php/Result.php +++ b/lib-php/Result.php @@ -13,8 +13,7 @@ class Result const TABLE_PLACEX = 0; const TABLE_POSTCODE = 1; const TABLE_OSMLINE = 2; - const TABLE_AUX = 3; - const TABLE_TIGER = 4; + const TABLE_TIGER = 3; /// Database table that contains the result. public $iTable; @@ -26,6 +25,8 @@ class Result public $iExactMatches = 0; /// Subranking within the results (the higher the worse). public $iResultRank = 0; + /// Address rank of the result. + public $iAddressRank; public function debugInfo() { @@ -54,6 +55,27 @@ class Result } ))); } + + public static function joinIdsByTableMinRank($aResults, $iTable, $iMinAddressRank) + { + return join(',', array_keys(array_filter( + $aResults, + function ($aValue) use ($iTable, $iMinAddressRank) { + return $aValue->iTable == $iTable && $aValue->iAddressRank >= $iMinAddressRank; + } + ))); + } + + public static function joinIdsByTableMaxRank($aResults, $iTable, $iMaxAddressRank) + { + return join(',', array_keys(array_filter( + $aResults, + function ($aValue) use ($iTable, $iMaxAddressRank) { + return $aValue->iTable == $iTable && $aValue->iAddressRank <= $iMaxAddressRank; + } + ))); + } + public static function sqlHouseNumberTable($aResults, $iTable) { $sHousenumbers = ''; @@ -84,7 +106,7 @@ class Result foreach ($aResults as $oRes) { if ($oRes->iResultRank < $iMinRank) { - $aTail = array_merge($aTail, $aHead); + $aTail += $aHead; $aHead = array($oRes->iId => $oRes); $iMinRank = $oRes->iResultRank; } elseif ($oRes->iResultRank == $iMinRank) {