penalize search order where a country comes first

This commit is contained in:
Sarah Hoffmann
2017-10-06 21:07:33 +02:00
parent 0d2cdb5c2f
commit 41d2cd318d

View File

@@ -709,6 +709,8 @@ class Geocode
Score how good the search is so they can be ordered Score how good the search is so they can be ordered
*/ */
$iGlobalRank = 0;
foreach ($aPhrases as $iPhrase => $aPhrase) { foreach ($aPhrases as $iPhrase => $aPhrase) {
$aNewPhraseSearches = array(); $aNewPhraseSearches = array();
if ($bStructuredPhrases) $sPhraseType = $aPhraseTypes[$iPhrase]; if ($bStructuredPhrases) $sPhraseType = $aPhraseTypes[$iPhrase];
@@ -745,6 +747,11 @@ class Geocode
$aSearch['iSearchRank'] += 5; $aSearch['iSearchRank'] += 5;
} }
if ($aSearch['iSearchRank'] < $this->iMaxRank) $aNewWordsetSearches[] = $aSearch; if ($aSearch['iSearchRank'] < $this->iMaxRank) $aNewWordsetSearches[] = $aSearch;
// If it is at the beginning, we can be almost sure that this is the wrong order
// Increase score for all searches.
if ($iToken == 0 && $iPhrase == 0) {
$iGlobalRank++;
}
} }
} elseif (($sPhraseType == '' || $sPhraseType == 'postalcode') && $aSearchTerm['class'] == 'place' && $aSearchTerm['type'] == 'postcode') { } elseif (($sPhraseType == '' || $sPhraseType == 'postalcode') && $aSearchTerm['class'] == 'place' && $aSearchTerm['type'] == 'postcode') {
// We need to try the case where the postal code is the primary element (i.e. no way to tell if it is (postalcode, city) OR (city, postalcode) so try both // We need to try the case where the postal code is the primary element (i.e. no way to tell if it is (postalcode, city) OR (city, postalcode) so try both
@@ -922,6 +929,7 @@ class Geocode
continue; continue;
} }
} }
$aSearch['iSearchRank'] += $iGlobalRank;
$aGroupedSearches[$aSearch['iSearchRank']][] = $aSearch; $aGroupedSearches[$aSearch['iSearchRank']][] = $aSearch;
} }
ksort($aGroupedSearches); ksort($aGroupedSearches);