Lucene SOLR-Boost函数(bf),用于增加日期最近的文档的分数

Lucene SOLR-Boost函数(bf),用于增加日期最近的文档的分数,lucene,solr,Lucene,Solr,我有一个solr实例,其中包含的文档的“startTime”字段范围从上个月到一年。我想添加一个boost查询/函数来提高startTime字段接近当前时间的文档的分数 到目前为止,我已经看到了很多使用rord向更新文档添加增强的示例,但我从未见过这样的示例 谁能告诉我怎么做吗 谢谢您可以在Solr 1.4中进行日期计算 如果您使用的是Solr 1.4+,那么您就可以访问函数查询中的“ms”函数,而标准的教科书式的按最近度提升方法是: recip(ms(NOW,startTime),3.16e-

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

到目前为止,我已经看到了很多使用rord向更新文档添加增强的示例,但我从未见过这样的示例

谁能告诉我怎么做吗


谢谢

您可以在Solr 1.4中进行日期计算


如果您使用的是Solr 1.4+,那么您就可以访问函数查询中的“ms”函数,而标准的教科书式的按最近度提升方法是:

recip(ms(NOW,startTime),3.16e-11,1,1)
ms给出两个参数之间的毫秒数。该表达式整体上提高了日期为现在的文档的分数1,日期为1年前的文档的分数1/2,日期为2年前的文档的分数1/3,等等。。(见肖恩·蒂姆(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的示例,那么您的日期字段可能已经采用了正确的格式。

您是否尝试询问Solr user?这是一个很好的答案。我发现另一个例子也解释了为什么他们使用3.16e-11以及如何更改它以满足您的需要:如果这不起作用,您可以尝试:{!boost b=recip(rord(contentdate),110001000)}