相关性和 Solr 分组

Relevance and Solr Grouping

假设我在 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 怎么办?具有很高的相关性并且只有一个结果?或相反亦然?还是当分组字段中有多个项目时,相关性求和?

我环顾四周,但未能找到合适的答案。

谢谢。

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

The groups are sorted by the score of the top document within each group.

因此,在您的示例中,如果 2.com 的 hello1.html 是您结果集中最相关的文档,那么 "Results from 2.com" 将是您最相关的组,即使 "Results from 1.com" 包括文档数的三倍。

如果这不是您想要的,最好的选择是提供不同的 sort 参数或结果 post 处理。例如,对于我参与的一个项目(我们的组数量非常少),我们选择为每个组提取前三个结果,在 post 处理中,我们计算了我们自己的排序顺序根据分数和 numFound 值的组合进行分组。对于组太多的情况,这种策略可能会让人望而却步,如果更多的组 运行 存在使最相关文档更难找到的风险,则可能不是一个好主意。