本文將為您詳細介紹基礎排序中支援的排序特徵函數項。
功能概述
基礎排序即是海選,從檢索結果中快速找到品質高的文檔,取出TOP N個結果再按照業務排序進行精細算分,最終返回最優的結果給使用者。由此可見,基礎排序對效能影響比較大,業務排序對最終排序效果影響比較大。因此,基礎排序要求盡量簡單有效,只提取業務排序中的關鍵因子即可。同時,基礎排序與業務排序目前均通過排序運算式的方式進行配置。
排序特徵函數項
static_bm25 : 靜態文本相關性,用于衡量query與文檔的匹配度
-
詳細用法請參見static_bm25。
-
參數:無。
-
傳回值:float,範圍為[0,1]。
-
適用情境:在基礎排序的運算式中指定文本分;在運算式中設定:static_bm25()。
-
注意事項:預設基礎排序default中即會生效static_bm25()。
static_bm25()得分超過1的情況:
如果使用者查詢時同時配置了查詢分析,比如同義字,預設的查詢是query=index:'蘋果',配置同義字之後的查詢是query=index:'蘋果' OR index:'apple'。那麼如果有文檔內容同時命中了蘋果和apple,此時static_bm25()的得分會被累加,即最後的基礎排序分將大於1。
exact_match_boost :擷取查詢中使用者指定的查詢詞權重最大值
-
詳細用法請參見exact_match_boost。
-
參數:無。
-
傳回值:int,範圍為[0, 99]。
-
適用情境:查詢為query=default:‘OpenSearch’^60 OR default:’opensearch’^50,希望按照實際匹配詞boost權重來排序。如果文檔A包含“OpenSearch”,文檔B包含“opensearch”,則文檔A排到文檔B前面。基礎排序運算式為:exact_match_boost()。
-
注意事項:
-
函數參數依賴欄位需建立為索引。
-
如果對於沒有指定boost的查詢詞預設boost值為99。
-
獨享型應用,exact_match_boost函數配置在基礎排序中,可支援 [‘’, ‘sum’, ‘max’]三種參數配置:在編輯策略頁面,為 exact_match_boost() 算分特徵的搜尋欄位下拉框中選擇彙總方式:max(取最大值)或 sum(求和),並設定對應的權重值。
-
timeliness : 時效分,用于衡量文檔的新舊程度
-
詳細用法:timeliness(pubtime),更多詳情請參見timeliness。
-
參數pubtime:要評估的欄位,類型必須為int,單位為秒。
-
傳回值:float,範圍為[0,1],值越大表示時效性越好。若大於目前時間則返回0。
-
適用情境:在基礎排序中指定create_timestamp欄位的時效性;在運算式中設定timeliness(create_timestamp)。
-
注意事項:pubtime欄位必須配置為屬性欄位。
timeliness_ms : 時效分,用于衡量文檔的新舊程度
-
詳細用法:timeliness_ms(pubtime),更多詳情請參見timeliness_ms。
-
參數pubtime:要評估的欄位,類型必須為int,單位為毫秒。
-
傳回值:float,範圍為[0,1],值越大表示時效性越好。若大於目前時間則返回0。
-
適用情境:在基礎排序中指定create_timestamp欄位的時效性;在運算式中設定:timeliness_ms(create_timestamp)。
-
注意事項:pubtime欄位必須配置為屬性欄位。
normalize :歸一化函數,根據不同的算分將數值歸一化至[0, 1]
-
情境概述:相關性計算過程中,一篇doc的好壞需要從不同的維度衡量。而各個維度分數範圍可能不同,比如網頁點擊數可能是成百上千萬,網頁的文本相關性分數在[0, 1]之間,它們之間沒有可比性。為了在公式中使用這些元素,需要將不同的分數歸一化至同一個範圍區間,而normalize為這種歸一化提供了一種簡便的方法。normlize支援三種歸一化方法:線性函數轉化、對數函數轉化、反正切函數轉化。根據傳入參數的不同,normalize自動選擇不同的歸一化方法。如果只指定value參數,normalize使用反正切函數轉化,如果指定了value和max參數,normalize使用對數函數轉化,如果指定了value、max和min,normalize使用線性函數轉化。
-
詳細用法:normalize(value, max, min),更多詳情請參見normalize。
-
參數value:需要做歸一化的值,支援double類型的浮點數,該值可以來自文檔中的欄位或者其他運算式max:value的最大值,可選,支援double類型的浮點數min:value的最小值,可選,支援double類型的浮點數
-
傳回值:double,[0, 1]之間的值。
-
適用情境:
-
情境1:對price欄位做歸一化,但是不知道price的範圍,可以使用如下公式進行歸一化normalize(price)。
-
情境2:對price欄位做歸一化,但是只知道price的最大值為100,可以使用如下公式進行歸一化normalize(price, 100)。
-
情境3:對price欄位做歸一化,並且知道price的最大值為100,最小值為1,可以使用如下公式進行歸一化normalize(price, 100, 1)。
-
情境4:將distance函數的結果歸一化至[0, 1]normalize(distance(longitude_in_doc, latitude_in_doc, longtitude_in_query, latitude_in_query))。
-
-
注意事項:
-
函數參數需建立為屬性。
-
使用反正切函數進行歸一化時,如果value小於0,歸一化後的值為0。
-
使用對數函數進行歸一化時,max的值要大於1。
-
使用線性函數進行歸一化時,max要大於min。
-