特征函數項
特征函數可以用到排序表達式中(大部分僅支持精排表達式),可以通過各種語法及語句的組合得到強大的排序功能。
其中特征函數參數出現的文檔字段需根據對應函數文檔提示,創建為索引或屬性.
normalize:歸一化函數,根據不同的算分將數值歸一化至[0, 1]
1.場景概述:
相關性計算過程中,一篇doc的好壞需要從不同的維度衡量。而各個維度的分數值域可能不同,比如網頁點擊數可能是成百上千萬,網頁的文本相關性分數在[0, 1]之間,它們之間沒有可比性。為了在公式中使用這些元素,需要將不同的分數歸一化至同一個值域區間,而normalize為這種歸一化提供了一種簡便的方法。normlize支持三種歸一化方法:線性函數轉化、對數函數轉化、反正切函數轉化。根據傳入參數的不同,normalize自動選擇不同的歸一化方法。如果只指定value參數,normalize使用反正切函數轉化,如果指定了value和max參數,normalize使用對數函數轉化,如果指定了value、max和min,normalize使用線性函數轉化。
2.詳細用法:
normalize(value, max, min)
3.參數:
value:需要做歸一化的值,支持double類型的浮點數,該值可以來自文檔中的字段或者其他表達式
max:value的最大值,可選,支持double類型的浮點數
min:value的最小值,可選,支持double類型的浮點數
4.返回值:
double,[0, 1]之間的值。
5.適用場景:
場景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))
6.注意事項:
函數參數需創建為屬性
使用反正切函數進行歸一化時,如果value小于0,歸一化后的值為0
使用對數函數進行歸一化時,max的值要大于1
使用線性函數進行歸一化時,max要大于min