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?ds=sidebyside 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; }