業務排序運算式,主要是對基礎排序後召回的結果做進一步排序算分,最終返回最優結果給使用者。業務排序運算式允許使用者為應用自訂搜尋結果排序方式,通過在查詢請求中指定運算式來對結果排序。排序運算式支援基本運算(算術運算、關係運算、邏輯運算、位元運算、條件運算)、數學函數和排序特徵(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 : 判斷欄位值是否(不)在指定列表中