块连接查询解析器 - 需要根据子节点或父节点或两者中的匹配来获取子文档

时间:2016-08-17 10:00:17

标签: join solr parent-child

您好我有以下文档结构:

{
  "_childDocuments_": [{
    "id": 6186039,
    ....
    "title_s": "doctitle text to be matched childone",
    ....
  }, {
    "id": 6186038,
    ....
    "title_s": "doctitle text to be matched childtwo",
    ....
  }, {
    "id": 6186037,
    ....
    "title_s": "doctitle text to be matched childthree",
    ....
  }],
  "id": 6186040,
  ....
  "title_s": "parenttitle doctitle to be matched",
  ....
}

我想在以下情况下获取子文档: 1.与孩子匹配的头衔 2.在父母中匹配的标题 3.孩子和父母都匹配的头衔

我尝试了各种组合,但在一个查询中无法满足所有三个条件

任何人都可以知道如何获得它吗?

1 个答案:

答案 0 :(得分:0)

如果您有任何方法可以区分父母和孩子,那么查询会更容易。例如,要查询父标题何时已知,您可以使用{!child of = allParents} title_s: parentTitle ,您可以通过标识父文档的某些条件替换allParents,例如添加类型。例如,如果添加了类型,那么对于所有父文档,type是parent,对于childs,它是child。然后查询将成为{!child of = type:parent} title_s: parentTitle

如果你有子标题,那么你可以用两个过滤查询查询类型:child和title_s: childTitle

有关块连接查询的参考,请参阅:https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-BlockJoinQueryParsers