閱讀882 返回首頁    go windows


搜索相關性配置__應用高級配置_產品使用手冊_開放搜索-阿裏雲

排序表達式(Ranking Formula)允許用戶為應用自定義搜索結果排序方式,通過在查詢請求中指定表達式來對結果排序。排序表達式支持基本運算(算術運算、關係運算、邏輯運算、位運算、條件運算)、數學函數和排序特征(feature)等。Open Search對於幾種經典的應用(如論壇、資訊等)提供了表達式模板,用戶可根據自己數據的特點,選擇合適的表達式模板,並以此為基礎進行修改,生成自己的表達式。

在進行相關性排序之前,首先要了解下係統排序策略:通過query等子句找到符合條件的文檔後,會進入排序階段(具體參見sort子句),如果未指定sort子句或者sort子句中顯式指定了RANK,那麼都將進入到相關性算分階段。

搜索引擎對於檢索性能要求比較高,為此,係統開放了兩階段排序過程:粗排和精排。粗排即是海選,從檢索結果中快速找到質量高的文檔,取出TOP N個結果再按照精排進行精細算分,最終返回最優的結果給用戶。由此可見,粗排對性能影響比較大,精排對最終排序效果影響比較大。因此,粗排要求盡量簡單有效,隻提取精排中的關鍵因子即可。

如何設計粗精排公式要取決於實際搜索場景的需求,最佳實踐-功能篇有個《相關性實戰》的文章,較詳細介紹了在幾個典型場景下如何來思考和設計排序因子,大家可以參考。

流程演示

  1. 主界麵:

  2. 添加新粗排表達式或編輯現有表達式

  3. 添加新精排表達式或編輯現有表達式
    編輯表達式內容

  4. 完成

基本運算

運算 運算符 說明
一元運算 - 負號,功能為對某個表達式的值取負值,如-1, -max(width)。
算數運算 +, -, *, / 如width / 10
關係運算 ==,!= ,>, <, >=, <= 如width>=400
邏輯運算 and ,or,! 如width>=400 and height >= 300, !(a > 1 and b < 2)
位運算 &, |,^ 如 3 & (price ^ pubtime) + (price | pubtime)
條件運算 if(cond, thenValue, elseValue) 如果cond的值非0,則該if表達式的實際值為thenValue,否則為elseValue。如if(2, 3, 5)的值為3,if(0, 3, 5)的值為5。
in 運算 i in [value1, value2, …, valuen] 如果i的值在集合[value1, value2, …, valuen]中出現,則該表達式值為1,否則為0。例如: 2 in [2, 4, 6]的值為1,3 in [2, 4, 6]的值為0。

數學函數

函數 說明
max(a, b) 取a和b的最大值。
min(a, b) 取a和b的最小值。
ln(a) 對a取自然對數。
log2(a) 對a取以2為底的對數。
log10(a) 對a取以10為底的對數。
sin(a) 正弦函數。
cos(a) 餘弦函數。
tan(a) 正切函數。
asin(a) 反正弦函數
acos(a) 反餘弦函數
atan(a) 反正切函數。
ceil(a) 對a向上取整,如ceil(4.2)為5。
floor(a) 對a向下取整,如floor(4.6)為4。
sqrt(a) 對a開方,如sqrt(4)為2。
pow(a,b) 返回a的b次冪,如pow(2, 3)為8。
now() 返回當前時間,自Epoch (00:00:00 UTC, January 1, 1970)開始計算,單位是秒。
random() 返回[0, 1]間的一個隨機值。

內置特征函數

OpenSearch提供了豐富的內置特征函數,如LBS類、文本類、時效類等,可以用在排序表達式中,相互組合實現強大的相關性排序效果。

最後更新:2016-11-23 16:04:03

  上一篇:go 索引重建__應用基本配置_產品使用手冊_開放搜索-阿裏雲
  下一篇:go 搜索相關性函數__應用高級配置_產品使用手冊_開放搜索-阿裏雲