solr中的深度嵌套文档搜索

rslzwgfq  于 2021-10-10  发布在  Java
关注(0)|答案(0)|浏览(324)

我一直在使用solr子/子文档索引/搜索,没有问题。现在我们面临着搜索深层嵌套(孙子、曾孙等)字段的需求。我在solr中的嵌套结构中对它们进行索引没有问题。但我无法在深嵌套字段中搜索字段。下面是我用于测试的一段数据。”sub2、sub3和sub4是嵌套路径。我正在使用Solr8.8.2(与solrj一起使用)。
[

{   "id": "1_1",

    "hierarchy": 1,

    "X1_11_str": "10001",

    "X1_12_text": "ancester one",

    "sub2": [

        {   "id": "1_1_2_1",

            "hierarchy": 2,

            "X2_21_text": "child one",

            "sub3": [

                "id": "1_1_2_1_3_1",

                "hierarchy": 3,

                "X3_31_text": "grand one",

                "sub4": [

                    {"id": "1_1_2_1_3_1_4_1",

                     "hierarchy": 4,

                     "X4_41_text": "great grand one",

                     "X4_42_int": 1,

                     "X4_43_str": "red"

                    },

                    {"id": "1_1_2_1_3_1_4_2",

                     "hierarchy": 4,

                     "X4_41_text": "great grand two",

                     "X4_42_int": 2,

                     "X4_43_str": "blue"

                    }

                ]

            ]

        }

    ]

}

]
在根文档上,有“sub2”子文档。在sub2文档上有“sub3”子文档,sub3和sub4也是如此。我想搜索sub4文档字段,但返回根文档。以下是我的疑问:
{!父层次结构=1}“x4_42_int”:1和“x4_43_str”:“红色”
它返回带有“id”的根文档:“1\u 1”。这是正确的。
{!父层次结构=1}“x4_42_int”:1和“x4_43_str”:“蓝色”
它仍然返回带有“id”的根文档:“1_1”。
我理解这是因为我要求根文档作为结果。但这不是我所期望的。我想要一个不返回任何内容的查询,因为没有与搜索匹配的sub4文档。
有人能帮助您使用正确的查询语法吗?
谢谢
西蒙

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题