X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/fd920fba9b0ae1dd4baeb92223043214779b9abe..7cc8f631251b927d57f4ca19a792386cd274e504:/lib/SearchDescription.php diff --git a/lib/SearchDescription.php b/lib/SearchDescription.php index c379fdf3..2e72decc 100644 --- a/lib/SearchDescription.php +++ b/lib/SearchDescription.php @@ -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; @@ -289,14 +290,10 @@ class SearchDescription $this->aFullNameAddress[$iWordID] = $iWordID; } } else { - // in structured search only the first phrase can be the - // designated name - if ($sPhraseType == '' || $bFirstPhrase) { - $oSearch = clone $this; - $oSearch->iSearchRank++; - $oSearch->aName = array($iWordID => $iWordID); - $aNewSearches[] = $oSearch; - } + $oSearch = clone $this; + $oSearch->iSearchRank++; + $oSearch->aName = array($iWordID => $iWordID); + $aNewSearches[] = $oSearch; } } @@ -679,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";