) {
if (!$this->sCountryCode) {
$oSearch = clone $this;
- $oSearch->iSearchRank += 2;
+ $oSearch->iSearchRank++;
$oSearch->sCountryCode = $oSearchTerm->sCountryCode;
// Country is almost always at the end of the string
// - increase score for finding it anywhere else (optimisation)
$iLimit
);
- //now search for housenumber, if housenumber provided
- if ($this->sHouseNumber && !empty($aResults)) {
+ // Now search for housenumber, if housenumber provided. Can be zero.
+ if (($this->sHouseNumber || $this->sHouseNumber === '0') && !empty($aResults)) {
// Downgrade the rank of the street results, they are missing
// the housenumber.
foreach ($aResults as $oRes) {
}
if ($this->sHouseNumber) {
- $aTerms[] = 'address_rank between 16 and 27';
+ $aTerms[] = 'address_rank between 16 and 30';
} elseif (!$this->sClass || $this->iOperator == Operator::NAME) {
if ($iMinAddressRank > 0) {
- $aTerms[] = 'address_rank >= '.$iMinAddressRank;
- }
- if ($iMaxAddressRank < 30) {
- $aTerms[] = 'address_rank <= '.$iMaxAddressRank;
+ $aTerms[] = "((address_rank between $iMinAddressRank and $iMaxAddressRank) or (search_rank between $iMinAddressRank and $iMaxAddressRank))";
}
}