業務排序表達式,主要是對基礎排序后召回的結果做進一步排序算分,最終返回最優結果給用戶。業務排序表達式允許用戶為應用自定義搜索結果排序方式,通過在查詢請求中指定表達式來對結果排序。排序表達式支持基本運算(算術運算、關系運算、邏輯運算、位運算、條件運算)、數學函數和排序特征(feature)等。OpenSearch對于幾種經典的應用(如論壇、資訊等)提供了表達式模板,用戶可根據自己數據的特點,選擇合適的表達式模板,并以此為基礎進行修改,生成自己的表達式。下文將介紹業務排序中支持的相關函數。
注意:排序表達式中一律使用數值或數值字段類型參與基本運算操作,例如算數,關系,邏輯,條件等運算操作,大部分函數都不支持字符串類型進行運算。
文本相關性
text_relevance : 關鍵詞在字段上的文本匹配度
field_match_ratio: 獲取某字段上與查詢詞匹配的分詞詞組個數與該字段總詞組個數的比值
query_match_ratio :獲取查詢詞中(在某個字段上)命中詞組個數與總詞組個數的比值
fieldterm_proximity : 用來表示關鍵詞分詞詞組在字段上的緊密程度
field_length:獲取某個字段上的分詞詞組個數
query_term_count : 返回查詢詞分詞后詞組個數
query_term_match_count :獲取查詢詞中(在某個字段上)命中文檔的詞組個數
field_term_match_count :獲取文檔中某個字段與查詢詞匹配的詞組個數
query_min_slide_window:查詢詞在某個字段上命中的分詞詞組個數與該詞組在字段上最小窗口的比值
地理位置相關性
distance : 獲取兩個點之間的球面距離。一般用于LBS的距離計算。
gauss_decay,使用高斯函數,根據數值和給定的起始點之間的距離,計算其衰減程度
linear_decay,使用線性函數,根據數值和給定的起始點之間的距離,計算其衰減程度
exp_decay,使用指數函數,根據數值和給定的起始點之間的距離,計算其衰減程度
時效性
timeliness : 時效分,用于衡量文檔的新舊程度,單位為秒
timeliness_ms : 時效分,用于衡量文檔的新舊程度,單位為毫秒
算法相關性
category_score:類目預測函數,返回參數中指定的類目字段與類目預測query的類目匹配分
popularity:人氣分,用于衡量物品的受歡迎程度
功能性
tag_match : 用于對查詢語句和文檔做標簽匹配,使用匹配結果對文檔進行算分加權
first_phase_score : 獲取粗排表達式最終計算分值
kvpairs_value : 獲取查詢串中kvpairs子句中指定字段的值
normalize :歸一化函數,根據不同的算分將數值歸一化至[0, 1]
in/notin : 判斷字段值是否(不)在指定列表中