X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/08f77067cb4b32c91f991924ff718a0508f0fbef..00b1521a6361a5bf57f7d60c0b04f720cd146629:/lib/Result.php?ds=sidebyside diff --git a/lib/Result.php b/lib/Result.php index 30c59854..a67c2fe4 100644 --- a/lib/Result.php +++ b/lib/Result.php @@ -27,6 +27,17 @@ class Result /// Subranking within the results (the higher the worse). public $iResultRank = 0; + public function debugInfo() + { + return array( + 'Table' => $this->iTable, + 'ID' => $this->iId, + 'House number' => $this->iHouseNumber, + 'Exact Matches' => $this->iExactMatches, + 'Result rank' => $this->iResultRank + ); + } + public function __construct($sId, $iTable = Result::TABLE_PLACEX) { @@ -57,4 +68,32 @@ class Result return $sHousenumbers; } + + /** + * Split a result array into highest ranked result and the rest + * + * @param object[] $aResults List of results to split. + * + * @return array[] + */ + public static function splitResults($aResults) + { + $aHead = array(); + $aTail = array(); + $iMinRank = 10000; + + foreach ($aResults as $oRes) { + if ($oRes->iResultRank < $iMinRank) { + $aTail = array_merge($aTail, $aHead); + $aHead = array($oRes->iId => $oRes); + $iMinRank = $oRes->iResultRank; + } elseif ($oRes->iResultRank == $iMinRank) { + $aHead[$oRes->iId] = $oRes; + } else { + $aTail[$oRes->iId] = $oRes; + } + } + + return array('head' => $aHead, 'tail' => $aTail); + } }