Solr - 使用" OR"组合块连接查询和父查询

时间:2017-01-16 16:40:39

标签: solr lucene

我正在使用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中作为单个查询执行此操作。

1 个答案:

答案 0 :(得分:1)

找到我的问题,这是"空间"在" {!parent =" type:parent"}"之间和" childspecs:spec1"。它可能解释为两个不同的查询,这就是我获取所有父文档和child1的原因。