一些背景知识:
我们的数据看起来像这样(为了简单起见,我删除了一些字段):
{
"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 ,我们会收到错误父查询生成文档,该文档与父级过滤器不匹配,docID = XXX
当我们第一次看到这个错误时,我们发现我们的id字段在文档类型中并不是唯一的,所以我们添加了如上所述的uuid字段,即。我们还在schema.xml文件中添加了 ,擦除了核心,重新创建了它,并重新启动了Solr,以确保它生效。我们进行了双重检查,并确保uuid字段是唯一的。
在我发现的该错误的所有搜索结果中,OP没有可以区分不同文档类型的字段,但正如您所看到的那样。由于查询和parentFilter都在搜索 docType:Product ,我不知道如何除了父母之外还可以返回任何内容。我们还尝试添加childFilter = docType:Item和childFilter = docType:Sku但是没有帮助。我还尝试使用title:*作为查询和parentFilter,因为只有产品有标题。
我们还有什么可以尝试的吗?
对此有何解释?
即使在schema.xml中指定了uuid,它是否可能不使用uuid作为唯一标识符,这是否会导致这种情况?
感谢。
答案 0 :(得分:1)
事实证明我们甚至没有使用schema.xml,因为solrconfig.xml是为托管架构配置的。糟糕。
大部分文档都假设您使用的是无模式,甚至没有详细介绍,所以我错过了。