相关性和 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 值的组合进行分组。对于组太多的情况,这种策略可能会让人望而却步,如果更多的组 运行 存在使最相关文档更难找到的风险,则可能不是一个好主意。
假设我在 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 值的组合进行分组。对于组太多的情况,这种策略可能会让人望而却步,如果更多的组 运行 存在使最相关文档更难找到的风险,则可能不是一个好主意。