天天看點

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 使用表達式,比如:在電商中我們可以根據銷售量、庫存量、收藏量的一個結果進行排序。

參考文檔:

本文出自 “” 部落格,請務必保留此出處