SOLR - 提升功能(bf)以提高日期最接近NOW的文档的分数

Mec*_*nic 8 lucene solr

我有一个solr实例,其中包含从上个月到现在一年的"startTime"字段的文档.我想添加一个提升查询/函数来提高其startTime字段接近当前时间的文档的分数.

到目前为止,我已经看到很多使用rord为新文档添加提升的示例,但我从未见过这样的例子.

谁能告诉我怎么做呢?

谢谢

Chr*_*ris 16

如果您使用的是Solr 1.4+,那么您可以在函数查询中访问"ms"函数,并且按新近度提升的标准教科书方法是:

recip(ms(NOW,startTime),3.16e-11,1,1)
Run Code Online (Sandbox Code Playgroud)

ms给出两个参数之间的毫秒数.对于现在的文档,整个表达式将得分提高1,对于1年前的文档为1/2,对于2年前的文档为1/3,等等.(请参阅http://wiki.apache.org/solr/FunctionQuery#Date_Boosting,正如Sean Timm指出的那样.)

在你的情况下,你有将来的文档日期,并且这些将被上面的函数分配负分,所以你可能想要输入一个绝对值,如下所示:

recip(abs(ms(NOW,startTime)),3.16e-11,1,1)
Run Code Online (Sandbox Code Playgroud)

abs(ms(NOW,startTime))将给出startTime和now之间的毫秒数,保证是非负的.

那将是一个很好的起点.如果你愿意,你可以调整3.16e-11,如果它过于激进或不够激进.

在切线方面,ms函数仅适用于基于TrieDate类的字段,而不适用于经典的Date和LegacyDate类.如果schema.xml基于Solr 1.4的示例,那么您的日期字段可能已经是正确的格式.


小智 1

您可以在 Solr 1.4 中进行日期数学运算。

http://wiki.apache.org/solr/FunctionQuery#Date_Boosting