对于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