目前SPHINX支持6种排序模式。分别是:
1. SPH_SORT_RELEVANCE
2. SPH_SORT_ATTR_DESC
3. SPH_SORT_ATTR_ASC
4. SPH_SORT_TIME_SEGMENTS
5. SPH_SORT_EXTENDED
6. SPH_SORT_EXPR
第一种表示按照相关度排序,以降序排序(最佳匹配记录排到最前面)。
第二种表示按照文档属性排序,以降序排序(属性值大的排在前面)。
第三种表示按照文档属性排序,以升序排序(属性值小的记录排在前面)。
第四种表示按照时间段排序(比如最近1小时/1天/1周/1个月),以降序排列,然后是相关度排序,以降序排列。
第五种表示按照扩展语句排序,由文档字段组成的类似SQL语句的排序,可以设置升序或降序。
第六种表示表达式模式,由算术表达式来决定顺序。
例子1:
1. 以权重升序的方式排序
$sph = new SphinxClient();
$sph->SetSortMode(SPH_SORT_EXTENDED, "@weight ASC");
它会以weight的数值按照从小到大的顺序排列搜索出来的记录,在查询的那一瞬间就生产出这个列表。
代码:
// 其他内容... [matches] => Array ( [0] => Array ( [id] => 100004 [weight] => 1678 [attrs] => Array ( [cid] => 100004 [title] => 香港 [name] => xianggang [title_en] => Hongkong [showname] => [time] => 1517389143 ) ) [1] => Array ( [id] => 100614 [weight] => 2745 [attrs] => Array ( [cid] => 100614 [title] => 香港迪士尼乐园 [name] => xianggangdishinileyuan [title_en] => Hong Kong Disneyland [showname] => 香港迪士尼乐园 [time] => 1517389143 ) ) [2] => Array ( [id] => 100616 [weight] => 2745 [attrs] => Array ( [cid] => 100616 [title] => 香港海洋公园 [name] => xiangganghaiyanggongyuan [title_en] => Hongkong Ocean Park [showname] => 香港海洋公园 [time] => 1517389143 ) ) ) // 其他代码...
2. 以权重降序的方式排序
$sph = new SphinxClient();
$sph->SetSortMode(SPH_SORT_EXTENDED, "@weight DESC");