我正在使用Solr 6.3中的许多集合,它们可能非常通用。在其中一些中,我可能需要在子字段和父字段上进行单个查询,使用" OR"运营商。为了说明,假设我在Solr中索引了以下文档:
{id: doc1,
type: parent,
specs: spec1,
NESTED_DOC_KEY:[
{id:child1, childspecs:spec1, type:child},
{id:child2, childspecs:spec2, type:child},
]},
{id: doc2,
type: parent,
specs: spec2,
NESTED_DOC_KEY:[
{id:child3, childspecs:spec3, type:child},
]},
{id: doc3,
type: parent,
specs: spec3,
NESTED_DOC_KEY:[
{id:child4, childspecs:spec4, type:child},
]},
}
例如,我需要查找所有带有specs的文档:spec3 OR文档,其中一个子节点具有childspecs:spec1。所以我希望找到doc1和doc3。我尝试了以下查询语法,但它返回所有三个文档和child1:
specs:spec3 OR {!parent which="type:parent"} childspecs:spec1
每个查询都是单独工作的,所以我可以在Solr之外加入结果,但我想知道是否有办法在Solr中作为单个查询执行此操作。
答案 0 :(得分:1)
找到我的问题,这是"空间"在" {!parent =" type:parent"}"之间和" childspecs:spec1"。它可能解释为两个不同的查询,这就是我获取所有父文档和child1的原因。