We're running sphinx on a mid-sized product database (10 mm records, 2gb) using the standard EXTENDED2 / SPH_RANK_PROXIMITY_BM25 approach. Speed is great, relevancy is spot on.
However we're running into increasing complaints from end-users who are searching with terms that are more complex than what our database has and thus getting no results.
For example, we have the product "KitchenAid Artisan 5-Quart Mixers" while a common search is "KitchenAid Artisan 5-Quart Stand Mixers brown". The result with our current settings is no match when we should be able to return the item we have.
We've tried using the MATCH_ANY sorting by @weight mode but relevancy goes completely sideways [think dolls and board games showing up] as sphinx picks up other products with individual words.
Is there a best practice way to build our query parameters that will allow for more open matching while still ranking off of proximity and word density?
Here is our current PHP API commands if that helps
$cl = new SphinxClient();
$cl->SetServer('1.23.4', 456);
$cl->SetMaxQueryTime(15000);
$cl->SetMatchMode(SPH_MATCH_EXTENDED2);
$cl->SetRankingMode(SPH_RANK_PROXIMITY_BM25);
$cl->SetArrayResult(true);
$cl->SetFilter('active', array(1));
$cl->SetSortMode(SPH_SORT_RELEVANCE, '@weight DESC, priced ASC');
$cl->SetLimits(intval($try), 1, 20, 500);
$cl->SetFieldWeights(array('ptitle' => 60, 'description' => 40));
$res = $cl->query($searchterm,"products");