您的位置:首页 > 其它

sphinx实现分组排序后,组内排序问题

2015-06-19 16:19 746 查看

SetGroupBy (设置分组的属性)

原型: function SetGroupBy ( $attribute, $func, $groupsort="@group desc" )

设置进行分组的属性、函数和组间排序模式,并启用分组(参考第 5.7 节 “结果分组(聚类)”中的描述)。

$attribute
是字符串,为进行分组的属性名。
$func
为常数,它指定内建函数,该函数以前面所述的分组属性的值为输入,目前的可选的值为:
SPH_GROUPBY_DAY、SPH_GROUPBY_WEEK、 SPH_GROUPBY_MONTH、 SPH_GROUPBY_YEAR、SPH_GROUPBY_ATTR 。
$groupsort
是控制分组如何排序的子句。其语法与第 5.6 节 “SPH_SORT_EXTENDED mode”中描述的相似。

分组与SQL中的GROUP BY子句本质上相同。此函数调用产生的结果与下面伪代码产生的结果相同。

SELECT ... GROUP BY $func($attribute) ORDER BY $groupsort

注意,影响最终结果集中匹配项顺序的是
$groupsort
。排序模式(见第 8.3.3 节 “SetSortMode (设置排序模式)”)影响每个分组内的顺序,即每组内哪些匹配项被视为最佳匹配。比如,组之间可以根据每组中的匹配项数量排序的同时每组组内又根据相关度排序。

cl.SetGroupBy ( 'food_name', SPH_GROUPBY_ATTR, 'addtime desc')
cl.SetSortMode ( SPH_SORT_EXTENDED, 'addtime desc')
先按food_name分组,然后组间用addtime排序,组内也用addtime排序,基本上就能实现分组后的记录是自己想要的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: