我的索引中有优先级列。我希望通过优先级DESC获得自动建议,但它不起作用
$cl->SetMatchMode(SPH_MATCH_EXTENDED2);
$cl->SetSortMode(SPH_SORT_EXTENDED, 'priority DESC');
$cl->SetLimits(0, 10);
$cl->SetGroupBy('alias_seq', SPH_GROUPBY_ATTR);
$partialQueryStr = " @keyword ^$query*";
$cl->AddQuery($partialQueryStr, 'autosuggest');
$result = $cl->RunQueries();
狮身人面像指数
source autosuggest {
//..other fields/attrs
sql_attr_uint = priority
}
答案 0 :(得分:1)
请注意,您还拥有GROUP BY。在GROUP BY查询中,SetSortMode
设置GROUP顺序(即返回组中的哪一行) - 而不是最终结果集。
...你需要第三个参数($groupsort
)到SetGroupBy
http://sphinxsearch.com/docs/current.html#api-func-setgroupby
请注意,$ groupsort会影响最终结果集中的匹配顺序。排序模式(参见第9.3.3节“SetSortMode”)会影响组内匹配的排序,即。什么匹配将被选为该组中最好的一个。因此,您可以按匹配计数对组进行排序,并同时在每个组中选择最相关的匹配。
例如:
$cl->SetGroupBy('alias_seq', SPH_GROUPBY_ATTR, 'priority DESC');
(请注意,它只接受扩展排序参数,因此您的现有排序可以重复)