我一直在使用 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 文档字段上搜索但返回根文档。以下是我的疑问:
{!parent hierarchy=1}"X4_42_int":1 AND "X4_43_str":"red"
它返回带有“id”:“1_1”的根文档。这是正确的。
{!parent hierarchy=1}"X4_42_int":1 AND "X4_43_str":"blue"
它仍然返回带有 "id":"1_1" 的根文档。
我理解这是因为我要求根文件作为结果。但这不是我所期望的。我想要一个不返回任何内容的查询,因为没有与搜索匹配的 sub4 文档。
任何人都可以帮助使用正确的查询语法吗?
谢谢,
西蒙