WIKI使用導(dǎo)航
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)專(zhuān)題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢(qián)
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專(zhuān)題
- 云計(jì)算
- 微博營(yíng)銷(xiāo)
- 虛擬主機(jī)管理系統(tǒng)
- 開(kāi)放平臺(tái)
- WIKI程序與應(yīng)用
- 美國(guó)十大主機(jī)
Sphinx/排序模式
可使用如下模式對(duì)搜索結(jié)果排序:
- SPH_SORT_RELEVANCE 模式, 按相關(guān)度降序排列(最好的匹配排在最前面)
- SPH_SORT_ATTR_DESC 模式, 按屬性降序排列 (屬性值越大的越是排在前面)
- SPH_SORT_ATTR_ASC 模式, 按屬性升序排列(屬性值越小的越是排在前面)
- SPH_SORT_TIME_SEGMENTS 模式, 先按時(shí)間段(最近一小時(shí)/天/周/月)降序,再按相關(guān)度降序
- SPH_SORT_EXTENDED 模式, 按一種類(lèi)似SQL的方式將列組合起來(lái),升序或降序排列。
- SPH_SORT_EXPR 模式,按某個(gè)算術(shù)表達(dá)式排序。
SPH_SORT_RELEVANCE忽略任何附加的參數(shù),永遠(yuǎn)按相關(guān)度評(píng)分排序。所有其余的模式都要求額外的排序子句,子句的語(yǔ)法跟具體的模式有關(guān)。SPH_SORT_ATTR_ASC, SPH_SORT_ATTR_DESC以及SPH_SORT_TIME_SEGMENTS這三個(gè)模式僅要求一個(gè)屬性名。SPH_SORT_RELEVANCE模式等價(jià)于在擴(kuò)展模式中按"@weight DESC, @id ASC"排序,SPH_SORT_ATTR_ASC 模式等價(jià)于"attribute ASC, @weight DESC, @id ASC",而SPH_SORT_ATTR_DESC 等價(jià)于"attribute DESC, @weight DESC, @id ASC"。
SPH_SORT_TIME_SEGMENTS 模式
在SPH_SORT_TIME_SEGMENTS模式中,屬性值被分割成“時(shí)間段”,然后先按時(shí)間段排序,再按相關(guān)度排序。
時(shí)間段是根據(jù)搜索發(fā)生時(shí)的當(dāng)前時(shí)間戳計(jì)算的,因此結(jié)果隨時(shí)間而變化。
時(shí)間段的分法固化在搜索程序中了,但如果需要,也可以比較容易地改變(需要修改源碼)。
這種模式是為了方便對(duì)Blog日志和新聞提要等的搜索而增加的。使用這個(gè)模式時(shí),處于更近時(shí)間段的記錄會(huì)排在前面,但是在同一時(shí)間段中的記錄又根據(jù)相關(guān)度排序-這不同于單純按時(shí)間戳排序而不考慮相關(guān)度。
SPH_SORT_EXTENDED 模式
在 SPH_SORT_EXTENDED 模式中,您可以指定一個(gè)類(lèi)似SQL的排序表達(dá)式,但涉及的屬性(包括內(nèi)部屬性)不能超過(guò)5個(gè),例如:
@relevance DESC, price ASC, @id DESC
只要做了相關(guān)設(shè)置,不管是內(nèi)部屬性(引擎動(dòng)態(tài)計(jì)算出來(lái)的那些屬性)還是用戶(hù)定義的屬性就都可以使用。內(nèi)部屬性的名字必須用特殊符號(hào)@開(kāi)頭,用戶(hù)屬性按原樣使用就行了。在上面的例子里,@relevance和@id是內(nèi)部屬性,而price是用戶(hù)定義屬性。
已知的內(nèi)置屬性:
- @id (匹配文檔的 ID)
- @weight (匹配權(quán)值)
- @rank (等同 weight)
- @relevance (等同 weight)
- @random (隨機(jī)順序返回結(jié)果)
@rank 和 @relevance 只是 @weight 的別名。
SPH_SORT_EXPR 模式
表達(dá)式排序模式使您可以對(duì)匹配項(xiàng)按任何算術(shù)表達(dá)式排序,表達(dá)式中的項(xiàng)可以是屬性值,內(nèi)部屬性(@id和@weight),算術(shù)運(yùn)算符和一些內(nèi)建的函數(shù)。例如:
$cl->SetSortMode ( SPH_SORT_EXPR,
"@weight + ( user_karma + ln(pageviews) )*0.1" );
支持的運(yùn)算符和函數(shù)如下。它們是模仿MySQL設(shè)計(jì)的。函數(shù)接受參數(shù),參數(shù)的數(shù)目根據(jù)具體函數(shù)的不同而不同。
- 運(yùn)算符: +, -, *, /, <, > <=, >=, =, <>.
- 布爾操作符: AND, OR, NOT.
- 無(wú)參函數(shù): NOW().
- 一元函數(shù)(一個(gè)參數(shù)): ABS(), CEIL(), FLOOR(), SIN(), COS(), LN(), LOG2(), LOG10(), EXP(), SQRT(), BIGINT().
- 二元函數(shù)(兩個(gè)參數(shù)): MIN(), MAX(), POW(), IDIV().
- 其他函數(shù): IF(), INTERVAL(), IN(), GEODIST().