Solr父级Blockjoin对子级进行过滤查询

时间:2018-10-02 00:12:10

标签: solr

有没有一种好的方法来对子项执行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 Search Example 1

相反,正常的文档过滤器行为是从结果集中删除不匹配的文档。例如。如果有两个ID为1和2的文档,而我以id:2的过滤查询搜索id:1,则不会退回任何文档。

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

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

但是在某些情况下,首选使用过滤器查询尤其是。在q(或fq)值中使用了多个父级Block-join查询的情况下,您希望使用fq对其进行过滤。

如果当前的solr项目中目前没有实现此目标的方法,那么我希望您能指导它是否合理实施。

谢谢!

0 个答案:

没有答案