X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/a48ebd9b477318bc5fdb44d7dc6bbf695911a4b9..ace84ed0e370c5f1530bf02983990c0ab45b220b:/lib-php/TokenWord.php diff --git a/lib-php/TokenWord.php b/lib-php/TokenWord.php index 7c653f8f..a7557d38 100644 --- a/lib-php/TokenWord.php +++ b/lib-php/TokenWord.php @@ -1,4 +1,12 @@ iId; } + /** + * Check if the token can be added to the given search. + * Derive new searches by adding this token to an existing search. + * + * @param object $oSearch Partial search description derived so far. + * @param object $oPosition Description of the token position within + the query. + * + * @return True if the token is compatible with the search configuration + * given the position. + */ + public function isExtendable($oSearch, $oPosition) + { + return !$oPosition->isPhrase('country'); + } + /** * Derive new searches by adding this token to an existing search. * @@ -37,12 +61,8 @@ class Word */ public function extendSearch($oSearch, $oPosition) { - if ($oPosition->isPhrase('country')) { - return array(); - } - // Full words can only be a name if they appear at the beginning - // of the phrase. In structured search the name must forcably in + // of the phrase. In structured search the name must forcibly in // the first phrase. In unstructured search it may be in a later // phrase when the first phrase is a house number. if ($oSearch->hasName() @@ -58,13 +78,12 @@ class Word } } elseif (!$oSearch->hasName(true)) { $oNewSearch = $oSearch->clone(1); - $oNewSearch->addNameToken($this->iId); - if (CONST_Search_NameOnlySearchFrequencyThreshold + $oNewSearch->addNameToken( + $this->iId, + CONST_Search_NameOnlySearchFrequencyThreshold && $this->iSearchNameCount < CONST_Search_NameOnlySearchFrequencyThreshold - ) { - $oNewSearch->markRareName(); - } + ); return array($oNewSearch); }