全部产品

normalize

更新时间:2017-06-07 13:26:11

特征函数项

特征函数可以用到排序表达式中(大部分仅支持精排表达式),可以通过各种语法及语句的组合得到强大的排序功能。其中特征函数参数出现的文档字段需根据对应函数文档提示,创建为索引或属性.

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