如何在SOLR中正确查询父级和子级文档?

时间:2019-03-08 17:02:39

标签: search indexing solr lucene

索引结构:

{
  "documents": [
    {
      "doc_type": [
        "dataset"
      ],
      "title": [
        "document_title"
      ],
      "id": [
        1234
      ],
      "_childDocuments_": [
        {
          "parent_id": [
            1234
          ],
          "doc_type": [
            "column"
          ],
          "id": [
            789
          ],
          "attr_nm": [
            "child_field_value"
          ],
        },
      ]
    }
  ]
}

每当执行搜索/查询时,我总是要返回父文档。例如。如果我搜索“ child_field_value”,我想获取父文档广告,则用户永远不会看到子文档。

我可以为父母工作。例如。如果我搜索“ document_title”,则可以使用以下设置获取上面的结构:

q=document_title
fl=*,[child parentFilter=doc_type:dataset]
qf=title^200 attr_nm

如果我使用查询关键字“ child_field_value”尝试此操作,则会得到一个奇怪的结构,如:

"response": {
  "numFound":2,
  "start":0,
  "docs":[
    {
      "parent_id":"1234",
      "doc_type":"column",
      "id":"123",
      "attr_nm":"child_field_value",
    },
    {
      "parent_id":"1234",
      "doc_type":"column",
      "id":"456",
      "attr_nm":"child_field_value",
      "_childDocuments_":[{
        "parent_id":"1234",
        "doc_type":"column",
        "id":"124",
        "attr_nm":"child_field_value",
      }]
    }
  ]
}

即使在子字段中搜索任何值,如何确保始终能获得所需的结果?

0 个答案:

没有答案