X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/a48ebd9b477318bc5fdb44d7dc6bbf695911a4b9..79effae93387958e2716aa679137305c8db9d11d:/lib-php/TokenHousenumber.php diff --git a/lib-php/TokenHousenumber.php b/lib-php/TokenHousenumber.php index 0cc67a12..ea7a052e 100644 --- a/lib-php/TokenHousenumber.php +++ b/lib-php/TokenHousenumber.php @@ -23,6 +23,24 @@ class HouseNumber return $this->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 !$oSearch->hasHousenumber() + && !$oSearch->hasOperator(\Nominatim\Operator::POSTCODE) + && $oPosition->maybePhrase('street'); + } + /** * Derive new searches by adding this token to an existing search. * @@ -36,19 +54,12 @@ class HouseNumber { $aNewSearches = array(); - if ($oSearch->hasHousenumber() - || $oSearch->hasOperator(\Nominatim\Operator::POSTCODE) - || !$oPosition->maybePhrase('street') - ) { - return $aNewSearches; - } - // sanity check: if the housenumber is not mainly made // up of numbers, add a penalty $iSearchCost = 1; if (preg_match('/\\d/', $this->sToken) === 0 - || preg_match_all('/[^0-9]/', $this->sToken, $aMatches) > 2) { - $iSearchCost++; + || preg_match_all('/[^0-9 ]/', $this->sToken, $aMatches) > 3) { + $iSearchCost += strlen($this->sToken) - 1; } if (!$oSearch->hasOperator(\Nominatim\Operator::NONE)) { $iSearchCost++;