X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/e0ead17ad93bd34fde9ccdf3844d7c608dc7c12a..ab54a4b8d7ba75f7a1ecd18de34bbce5af291b5b:/lib/SearchDescription.php diff --git a/lib/SearchDescription.php b/lib/SearchDescription.php index 13775d65..2e72decc 100644 --- a/lib/SearchDescription.php +++ b/lib/SearchDescription.php @@ -58,7 +58,7 @@ class SearchDescription /** * Get current search rank. * - * The higher the search rank the lower the likelyhood that the + * The higher the search rank the lower the likelihood that the * search is a correct interpretation of the search query. * * @return integer Search rank. @@ -262,7 +262,7 @@ class SearchDescription $iOp = Operator::NEAR; // near == in for the moment if ($aSearchTerm['operator'] == '') { - if (sizeof($this->aName)) { + if (sizeof($this->aName) || $this->oContext->isBoundedSearch()) { $iOp = Operator::NAME; } $oSearch->iSearchRank += 2; @@ -276,11 +276,12 @@ class SearchDescription && $sPhraseType != 'country' ) { $iWordID = $aSearchTerm['word_id']; - if (sizeof($this->aName)) { - if (($sPhraseType == '' || !$bFirstPhrase) - && $sPhraseType != 'country' - && !$bHasPartial - ) { + // Full words can only be a name if they appear at the beginning + // of the phrase. In structured search the name must forcably in + // the first phrase. In unstructured search it may be in a later + // phrase when the first phrase is a house number. + if (sizeof($this->aName) || !($bFirstPhrase || $sPhraseType == '')) { + if (($sPhraseType == '' || !$bFirstPhrase) && !$bHasPartial) { $oSearch = clone $this; $oSearch->iSearchRank++; $oSearch->aAddress[$iWordID] = $iWordID; @@ -675,7 +676,7 @@ class SearchDescription if ($this->sHouseNumber) { $sImportanceSQL = '- abs(26 - address_rank) + 3'; } else { - $sImportanceSQL = '(CASE WHEN importance = 0 OR importance IS NULL THEN 0.75-(search_rank::float/40) ELSE importance END)'; + $sImportanceSQL = '(CASE WHEN importance = 0 OR importance IS NULL THEN 0.75001-(search_rank::float/40) ELSE importance END)'; } $sImportanceSQL .= $this->oContext->viewboxImportanceSQL('centroid'); $aOrder[] = "$sImportanceSQL DESC";