子文档上的Apache Solr过滤器

时间:2017-09-19 10:32:08

标签: solr lucene solrcloud

我有一个Document,其中还包含子文档列表,如下所示: -

{

    "pf1":"data1",
    "pf2":"data2",
    "path":"1.parent",
    "_childDocuments":[
        {
            "cf1":"data101",
            "cf2":"data102",
            "path":"2.child"
        },
        {
            "cf1":"data111",
            "cf2":"data112",
            "path":"2.child"
        }
    ]

}

我想查询cf1具有值data101的子文档。这意味着我的输出将是这样的。

{

    "pf1":"data1",
    "pf2":"data2",
    "path":"1.parent",
    "_childDocuments":[
        {
            "cf1":"data101",
            "cf2":"data102",
            "path":"2.child"
        }
    ]

}

我无法为此生成查询。 有什么方法可以查询子文档,也可以获取那些包含我的结果的孩子吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

是的,你可以在ChildDocTransformer

的帮助下做到这一点

您现在应该对父文档进行正常查询,例如:

q=pf1:data1

并在字段列表参数中应用变换器:

fl=pf1,pf2,path,[child parentFilter=type:parent childFilter=cf1:data101]

您需要仔细选择parentFilter,因为您将在那里使用的查询应该只匹配父文档。因此,在我的示例中,type:parent只是一个占位符,您应该根据您的数据提出查询(可能您甚至应该添加一些字段类型以便于区分)