首页 > 代码库 > coreseek 自定义词库(三)排序 setsortmode
coreseek 自定义词库(三)排序 setsortmode
对于mysql获取数据,可以根据不同的条件来进行排序,同样使用coreseek也有同样的排序功能。
PHP的API中只有 SetSortMode(模式,条件) 方法,他也支持多个字段一次排序。
根据上一篇的数据:
require(‘sphinxapi.php‘);
$sc = new SphinxClient();
$sc->SetSortMode(SPH_SORT_ATTR_DESC, ‘group_id‘);
$sc->SetSortMode(SPH_SORT_ATTR_ASC, ‘score‘);
$sc->SetSortMode(SPH_SORT_TIME_SEGMENTS , ‘created_time‘);
$sc->SetSortMode(SPH_SORT_EXPR, "group_id + score");
模式:
SPH_SORT_RELEVANCE 模式, 按相关度降序排列(相关度高的排在前面)
SPH_SORT_ATTR_DESC 模式, 按属性降序排列 (属性值大的排在前面)
SPH_SORT_ATTR_ASC 模式, 按属性升序排列(属性值越小的排在前面)
SPH_SORT_TIME_SEGMENTS 模式, 先按时间段(最近的一小时/天/周/月)降序,再按相关度降序
SPH_SORT_EXTENDED 模式, 按一种类似SQL的方式将列组合起来,升序或降序排列。
SPH_SORT_EXPR 模式,按某个算术表达式排序。
备注:
SPH_SORT_RELEVANCE 默认的模式,按照相关度排序
SPH_SORT_ATTR_DESC 同等与 sql 中的 ORDER BY field DESC
SPH_SORT_ATTR_ASC 同等与 sql 中的 ORDER BY field AC
SPH_SORT_TIME_SEGMENTS 相当于两个条件进行排序,首先按照时间段进行排序,然后在按照相关度进行排序,一般我们会用在 新闻、文章等的搜索排序。注:时间段的划分被定义在源码中,如果需要也可以修改。
SPH_SORT_EXTENDED 指定类型与sql的排序表达式,涉及的属性不要太多,内部属性的名字前加上@ 符号就可以
SPH_SORT_EXPR 使用表达式,比如:在电商中我们可以根据销售量、库存量、收藏量的一个结果进行排序。
参考文档:
http://www.php.net/manual/zh/sphinxclient.setsortmode.php
http://blog.c1gstudio.com/archives/734
本文出自 “追梦” 博客,请务必保留此出处http://dreameng.blog.51cto.com/1187899/1411983