首页 > 解决方案 > 如何在 SOLR 中正确查询父子文档?

问题描述

索引结构:

{
  "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",
      }]
    }
  ]
}

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

标签: searchindexingsolrlucene

解决方案


推荐阅读