首页 > 解决方案 > Solr Parent Blockjoin 与子级过滤查询

问题描述

有没有一种很好的方法来对子项进行过滤查询(即子查询集的结果会影响过滤查询的子项上的过滤器)进行 Solr Parent 块连接?

Solr 有一种对父块连接的结果集进行过滤查询的便捷方式。例如

q={!parent which=doc_type:parent}content:dog
&fq={!parent which=doc_type:parent}comment:cat

但请注意,这仅根据子项的结果过滤级结果集。完整的子结果集两次都用于过滤器。

澄清一下,如果我插入带有子 A 和 B 的文档

{
    "doc_type":"parent",
    "id":"1",
    __children__: [
        {
            "id":"A"
        },
        {
            "id":"B"
        }
    ]
}

我希望能够搜索 A 并过滤 B 以在结果中一无所获,因为 id 的子文档匹配在 A(而不是 B)上。当前的行为是结果返回,因为在查询或过滤查询中搜索了两个孩子。 Solr 搜索示例 1

相比之下,正常的文档过滤器行为是从结果集中删除不匹配的文档。例如,如果有两个 id 为 1 和 2 的文档,并且我使用 id:2 的过滤查询搜索 id:1,我将不会得到任何文档。

我知道可以使用单个查询来实现正确的行为:

q={!parent which=doc_type:parent}id:A AND id:B

但是在某些情况下,过滤器查询可能是首选,尤其是。在 q(或 fq)值中使用多个父块连接查询并且您希望使用 fq 过滤它们的情况下。

如果在当前的 solr 项目中没有当前的实现,我将不胜感激有关这是否合理实施的指导。

谢谢!

标签: solr

解决方案


推荐阅读