gpt4 book ai didi

boost - 讲解Apache SOLR boost函数

转载 作者:行者123 更新时间:2023-12-04 03:03:40 25 4
gpt4 key购买 nike

我尝试在 APACHE SOLR 中实现一个逻辑,以便超过 2 年的文档应该根据天数或月数的差异受到惩罚。

我正在使用这个 boost 函数,这是我在谷歌上搜索了很多次之后得到的。

 recip(ms(NOW,publicationDate),3.16e-11,1,1) // Currently it is set to use 1 year

任何人都可以确认这个惩罚旧文件还是什么?

谢谢

最佳答案

A reciprocal function with recip(x,m,a,b) implementing a/(m*x+b). m,a,b are constants, x is any numeric field or arbitrarily complex function.

enter image description here

对于您的参数,您的函数将如下所示:

f(x) = 1 /(3.16e-11*x + 1)

Function ms returns milliseconds of difference between it's arguments.

Dates are relative to the Unix or POSIX time epoch, midnight, January 1, 1970 UTC.

想象一下,您的发布日期是 2015 年 9 月 1 日,ms 将得到我们的 NOW = 1507725936061 并且发布日期是 1441065600000 并且整个结果将在 0.3 左右,这将是本文档的分数。

对于昨天的发布日期,我们将得到 0.99 的分数,这导致了这个想法,因此,这个公式将对所有文档应用惩罚,而不仅仅是 2 年的文档。例如,对于 1 年前的同一天,分数将为 0.5

我可能会考虑通过这个函数进行排序(从 Solr 6 开始)

if(gt(ms(mydatefield,NOW-2YEARS),0),1,recip(ms(NOW,publicationDate),3.16e-11,1,1))

我没有测试它(不确定 NOW-2YEARS 部分),但基本上,我正在这样做:

if mydatefield - NOW-2YEARS greater 
than 0 => score will be 1.0
else => I'm calculating reciprocal function

最后要说的是:一年有 3.16e10 毫秒,因此可以将日期换算成一年的分数,或者 3.16e-11,所以 2 年,你可能会选择不同的东西。

关于boost - 讲解Apache SOLR boost函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com