【问题标题】:Relevance and Solr Grouping相关性和 Solr 分组
【发布时间】:2015-06-14 07:30:36
【问题描述】:

假设我在 Solr 索引中有以下网页集合:

+-----+----------+----------------+--------------+
|  ID |  Domain  |     Path       |    Content   |
+-----+----------+----------------+--------------+
|  1  |  1.com   |  /hello1.html  |  Hello dude  |
|  2  |  1.com   |  /hello2.html  |  Hello man   |
|  3  |  1.com   |  /hello3.html  |  Hello fella |
|  4  |  2.com   |  /hello1.html  |  Hello sir   |
...

我想要查询hello 以显示按域分组的结果,例如:

Results from 1.com:
  /hello1.html
  /hello2.html
  /hello3.html

Results from 2.com:
  /hello1.html

如果我按分数排序,排序是如何确定的?我通常将 TF/IDF 和 PageRank 组合用于我的结果,但由于它计算每个单独项目的分数,它如何确定如何对组进行排序?如果 1.com/hello3.html 和 1.com/hello2.html 的相关性非常低但有两个结果,而 2.com/hello1.html 的相关性非常高但只有一个结果怎么办?或相反亦然?或者当分组字段中有多个项目时,是否对相关性求和?

我环顾四周,但无法找到一个好的答案。

谢谢。

【问题讨论】:

  • 这取决于您的查询是什么,您是否使用分面,您使用什么查询分析器(简单或 edismax)等。也不清楚您的担忧或恐惧是什么。

标签: solr grouping relevance


【解决方案1】:

在我看来,您使用的是Result Grouping。如果是这种情况,则根据sort 参数对组进行排序,并根据group.sort 参数对每个组内的记录进行排序。如果您按sort=score desc 对组进行排序(这是默认设置,因此您实际上不需要指定它),那么它会根据每个组的score 对组进行排序。这个分数是如何确定的还不是很清楚,但是如果您查看链接文档中的示例,您可以看到以下声明:

这些组按每个组中顶部文档的分数排序。

因此,在您的示例中,如果 2.com 的 hello1.html 是您的结果集中最相关的文档,那么“来自 2.com 的结果”将是您最相关的组,即使“来自 1.com 的结果”包括三个乘以文档计数。

如果这不是您想要的,您最好的选择是提供不同的sort 参数或结果后处理。例如,对于我参与的一个项目(我们的组数量非常少),我们选择为每个组提取前三个结果,在后期处理中,我们根据它们的分数和 numFound 值的组合。这种策略对于包含太多组的案例可能会让人望而却步,如果更多的组冒着使最相关的文档更难找到的风险,则可能不是一个好主意。

【讨论】:

  • 正是我想要的,谢谢!我发誓我读过文档,但我完全错过了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2017-06-20
  • 2016-12-14
相关资源
最近更新 更多