From: Sarah Hoffmann Date: Thu, 2 Sep 2021 16:13:45 +0000 (+0200) Subject: reduce penalty for special searches by name X-Git-Tag: v4.0.0~32^2 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/98c2e08add81579abe36519e7bb62077800c6b8a reduce penalty for special searches by name Additional penalty for special terms with operator None should only go to near searches. To reduce the number of produced searches, restrict the none operator to appear only in conjunction with the name. --- diff --git a/lib-php/TokenSpecialTerm.php b/lib-php/TokenSpecialTerm.php index 5b2d4c70..6eb2ede3 100644 --- a/lib-php/TokenSpecialTerm.php +++ b/lib-php/TokenSpecialTerm.php @@ -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; }