![](/img/trans.png)
[英]Solr Nested Documents: query for parent document which has several specific nested documents
[英]Solr querying nested documents with ChildDocTransformerFactory, get "Parent query yields document which is not matched by parents filter"
一些背景:
我们的数据看起来像这样(为了简单起见,我删除了一些字段):
{
"id": 739063,
"docType": "Product",
"uuid": "P739063",
"_childDocuments_": [
{
"id": 1537378,
"price": 25.45,
"color": "Blush",
"docType": "Item",
"productId": 739063,
"uuid": "I1537378",
"_childDocuments_": [
{
"id": 12799578,
"size": "10",
"width": "W",
"docType": "Sku",
"itemId": 1537378,
"uuid": "S12799578"
}
]
}
}
获取所有产品及其嵌套在其中的子项的查询是q=docType:Product&fl=title,id,docType,[child parentFilter=docType:Product] 。 当我运行该查询时,一切正常,它返回前 10 行。 但是,如果我通过添加获取更多行,比如&rows=500 ,我们会得到错误Parent query yields document which is not match by parents 过滤器, docID=XXX 。
当我们第一次看到这个错误时,我们发现我们的 id 字段在文档类型中不是唯一的,所以我们添加了上面提到的 uuid 字段,即。 我们还添加了在我们的 schema.xml 文件中,擦除核心,重新创建它,然后重新启动 Solr 以确保它有效。 我们已经仔细检查并确定 uuid 字段是唯一的。
在我发现的该错误的所有搜索结果中,OP 没有可以区分不同文档类型的字段,但正如您看到的那样。 由于查询和 parentFilter 都在搜索docType:Product我看不出它们如何可能返回除父项之外的任何内容。 我们还尝试添加 childFilter=docType:Item 和 childFilter=docType:Sku 但这没有帮助。 而且我还尝试使用 title:* 作为查询和 parentFilter,因为只有产品有标题。
还有什么我们可以尝试的吗?
这有什么解释吗?
即使在schema.xml中指定了它,它是否也可能不使用uuid作为唯一标识符,甚至会导致这种情况?
谢谢。
结果我们甚至没有使用schema.xml,因为solrconfig.xml 是为托管模式配置的。 哎呀。
大部分文档都假设您使用的是无模式,甚至没有深入了解细节,所以我错过了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.