對于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 使用表達式,比如:在電商中我們可以根據銷售量、庫存量、收藏量的一個結果進行排序。
參考文檔:
本文出自 “” 部落格,請務必保留此出處