我使用Solr搜索事件,并且我需要按日期提升事件,以便更接近事件到当前日期,其得分与相同的事件相比得多名字,但以后的日期。所以," Alumni Reunion" 2015年1月应该在结果列表中显示高于" Alumni Reunion" 2015年10月。
我阅读了Solr相关常见问题解答,这是我在solr中使用的查询:
?q={!boost%20b=recip(abs(ms(NOW,dt_startdate)),3.16e-11,1,1)}searchterms&sort=score desc
它肯定会改变结果的顺序,但顺序错误。例如,我的一次搜索返回给我四个结果,将它们返回到2012年,2013年,2014年,2015年应该是相反的(2015年4月与2014年4月,2015年应首先出现)。我试过把它改成
sort=score asc
但不是按照我预期的相反顺序返回,而是顺序完全不同;它去了2014年,2015年,2012年,2013年
我的提升有什么问题?我相信如果没有提升,相关性对于所有这些都应该是相同的,因为包含我搜索的术语的字段对于每个都是完全相同的。在我提升之前,订单实际上是更好;虽然不是正确的,但它在2014年,2015年,2013年,2012年比现在更接近。
编辑:我意识到提升并不一定会把它放在日期顺序中,这很好,但是从9个月之前的事情肯定会出现在2012年之前,特别是因为没有提升,2014年的活动位居榜首。现在2012年首先出现。编辑2(重要):好的,所以我决定检查我的四个赛事的得分是多少,无论是否有提升。
2012:0.37118697提升:0.005060354
2013:0.4639837提升:0.005060354
2014:0.55678046提升:0.0044278097
2015:0.4639837提升:0.0044278097
因此,您可以看到提升实际上使较新 onces 更糟比旧版本更糟糕。它为什么这样做?我不太了解助推器正在做的等式,所以我不知道为什么它会让分数变差。
答案 0 :(得分:0)
听起来你只想根据日期订购搜索,而不是使用提升 - 提升意味着让更新的文档更高,而不是按降序/升序排列。
对于提升的示例将对一年以上的文档(iirc)应用不同的提升,而较旧的文档将不会从该子句获得任何提升。请记住,其他搜索条件也会应用提升,这些条款的得分可能比从年龄应用的提升更高/更相关。
日期提升不是一门精确的科学,并且必须根据你的其他提升来应用提升值(通过更改recip调用中的值,或者通过^权重来确定它们的优先顺序)。