X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/b14ce959d9532f192b748b12f6c71f23a9c1a60b..86eeb4d2eddaa6c409f542169780f59dc31ffc1b:/lib-php/TokenSpecialTerm.php diff --git a/lib-php/TokenSpecialTerm.php b/lib-php/TokenSpecialTerm.php index 355dbb91..6eb2ede3 100644 --- a/lib-php/TokenSpecialTerm.php +++ b/lib-php/TokenSpecialTerm.php @@ -10,13 +10,13 @@ require_once(CONST_LibDir.'/SpecialSearchOperator.php'); class SpecialTerm { /// Database word id, if applicable. - public $iId; + private $iId; /// Class (or OSM tag key) of the place to look for. - public $sClass; + private $sClass; /// Type (or OSM tag value) of the place to look for. - public $sType; + private $sType; /// Relationship of the operator to the object (see Operator class). - public $iOperator; + private $iOperator; public function __construct($iID, $sClass, $sType, $iOperator) { @@ -44,7 +44,10 @@ class SpecialTerm */ public function isExtendable($oSearch, $oPosition) { - return !$oSearch->hasOperator() && $oPosition->isPhrase(''); + return !$oSearch->hasOperator() + && $oPosition->isPhrase('') + && ($this->iOperator != \Nominatim\Operator::NONE + || (!$oSearch->hasAddress() && !$oSearch->hasHousenumber() && !$oSearch->hasCountry())); } /** @@ -66,8 +69,8 @@ class SpecialTerm $iOp = \Nominatim\Operator::NAME; } else { $iOp = \Nominatim\Operator::NEAR; + $iSearchCost += 2; } - $iSearchCost += 2; } elseif (!$oPosition->isFirstToken() && !$oPosition->isLastToken()) { $iSearchCost += 2; }