2

我正在实现 Solr dismax 搜索,并使用此功能recip(ms(NOW,PubDate),3.16e-11,1000,1000)进行日期提升。一切正常,但只有一个问题。

如果搜索关键字在标题中重复出现,它们会比最近的结果获得更高的分数。

例如 1) 标题 = solr lucene

日期 = 1 天前

2) Title = solr lucene 是最好的,喜欢 solr lucene

日期 = 15 天前

如果用户搜索“solr lucene”,那么 #2 会排在第一位,因为关键字在标题中重复出现。

我有太多 1、2 或 3 天前的记录,它们甚至有完全相同的标题“SOLR LUCENE”,但这些记录并没有出现在第一页,只是因为旧记录的标题中有重复的关键字。

我不想完全按日期对结果进行排序。目前我正在像这样排序它。排序=分数降序,日期升序

4

1 回答 1

3

如果您使用的是 boost,则不应使用 order 子句。如果你想给日期更多的相关性,那么就使用你的提升功能。由你决定,日期对搜索结果顺序的影响有多大。

它还取决于您使用的 dismax-handler:

{!edismax boost=recip(pow(ms(NOW,PubDate),<val>),3.16e-11,1,1)}

在 0 和 2 之间放置一个值而不是<val>占位符,其中 0 几乎是“按日期排序”,2 是按相关性排序。

不确定,这是否适用于 dismax,但它适用于标准 solr 搜索处理程序(使用上述示例之外的其他语法)和 edismax。

于 2011-08-02T15:15:18.813 回答