factor out check if a token fits current search

Saves allocating an empty array.
This commit is contained in:
Sarah Hoffmann
2021-07-17 22:01:35 +02:00
parent a48ebd9b47
commit b14ce959d9
7 changed files with 107 additions and 34 deletions

View File

@@ -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,13 +54,6 @@ 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;