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

时间:2009-09-28 13:12:37

标签: lucene solr

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

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

有人能告诉我怎么做吗?

由于

2 个答案:

答案 0 :(得分:16)

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

recip(ms(NOW,startTime),3.16e-11,1,1)

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)

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

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

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

答案 1 :(得分:1)

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

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

相关问题