解释Apache SOLR增强功能

时间:2017-10-11 12:27:02

标签: boost solr-boost

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

我正在使用这个增强功能,这是我在google搜索后得到的。

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

请问确认这是否会处罚旧文件或什么?

由于

1 个答案:

答案 0 :(得分:2)

  

msg.payload实施recip(x,m,a,b)的互惠函数。   m,a,b是常数,x是任何数字字段或任意复数   功能

enter image description here

如果您的参数,您的功能将如下所示:

a/(m*x+b)
  

函数f(x) = 1 /(3.16e-11*x + 1) 返回它之间的毫秒差异   参数。

     

日期相对于Unix或POSIX时间纪元,午夜,1月   1,1970 UTC。

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

对于昨天的出版日期,我们将得到0.99的得分,这导致了这个想法,因此,这个公式将对每个文件不仅对2岁的人应用惩罚。例如,在1年前的同一天,得分将为0.5

我可能会想到通过这个函数排序(从Solr 6开始)

ms

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

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

最后一句话:一年中有if mydatefield - NOW-2YEARS greater than 0 => score will be 1.0 else => I'm calculating reciprocal function 毫秒,因此可以使用倒数或3.16e10将日期缩放到一年的分数,因此在2年内,您可以选择不同的东西