Experimental option to dry dropping query terms as part of search plan (disabled by default)

This commit is contained in:
Brian Quinion
2012-12-03 17:41:29 +00:00
parent cc24d998e4
commit a276b6b53a
2 changed files with 37 additions and 0 deletions

View File

@@ -30,6 +30,7 @@
@define('CONST_Search_AreaPolygons_Enabled', true);
@define('CONST_Search_AreaPolygons', true);
@define('CONST_Search_TryDroppedAddressTerms', false);
@define('CONST_Suggestions_Enabled', false);

View File

@@ -728,6 +728,42 @@
}
}
if (CONST_Search_TryDroppedAddressTerms && sizeof($aStructuredQuery) > 0)
{
$aCopyGroupedSearches = $aGroupedSearches;
foreach($aCopyGroupedSearches as $iGroup => $aSearches)
{
foreach($aSearches as $iSearch => $aSearch)
{
$aReductionsList = array($aSearch['aAddress']);
$iSearchRank = $aSearch['iSearchRank'];
while(sizeof($aReductionsList) > 0)
{
$iSearchRank += 5;
if ($iSearchRank > iMaxRank) break 3;
$aNewReductionsList = array();
foreach($aReductionsList as $aReductionsWordList)
{
for ($iReductionWord = 0; $iReductionWord < sizeof($aReductionsWordList); $iReductionWord++)
{
$aReductionsWordListResult = array_merge(array_slice($aReductionsWordList, 0, $iReductionWord), array_slice($aReductionsWordList, $iReductionWord+1));
$aReverseSearch = $aSearch;
$aSearch['aAddress'] = $aReductionsWordListResult;
$aSearch['iSearchRank'] = $iSearchRank;
$aGroupedSearches[$iSearchRank][] = $aReverseSearch;
if (sizeof($aReductionsWordListResult) > 0)
{
$aNewReductionsList[] = $aReductionsWordListResult;
}
}
}
$aReductionsList = $aNewReductionsList;
}
}
}
ksort($aGroupedSearches);
}
// Filter out duplicate searches
$aSearchHash = array();
foreach($aGroupedSearches as $iGroup => $aSearches)