Solr 中的深层嵌套文档搜索

时间:2021-06-01 17:17:46

标签: search solr

我一直在使用 Solr 子/子文档索引/搜索没有问题。现在我们面临着搜索深度嵌套(孙子、曾孙子等)字段的需求。我在 Solr 的嵌套结构中索引它们没有问题。但是我无法在深层嵌套字段中搜索字段。下面是我用来测试的一段数据。 “sub2”、“sub3”和“sub4”是嵌套路径。我使用的是 Solr 8.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 和 sub 4 也是如此。我想在 sub4 文档字段上搜索但返回根文档。以下是我的疑问:

  1. {!parent hierarchy=1}"X4_42_int":1 AND "X4_43_str":"red"

    它返回带有“id”:“1_1”的根文档。这是正确的。

  2. {!parent hierarchy=1}"X4_42_int":1 AND "X4_43_str":"blue"

    它仍然返回带有 "id":"1_1" 的根文档。

    我理解这是因为我要求根文件作为结果。但这不是我所期望的。我想要一个不返回任何内容的查询,因为没有与搜索匹配的 sub4 文档。

任何人都可以帮助使用正确的查询语法吗?

谢谢,

西蒙

0 个答案:

没有答案