0

在 solr 6.6.0 中,我想将嵌套对象用于特定键。

所以假设,我有一份文件如下:

{
    "ID": "16_nl",
    "countryIso": "AUS",
    "regionId": 30,
    "name": "test",
    "placeId": 50,
    "eventID": 100,
    "facilities": [12],
    "created": "2017-11-30T11:00:36.717Z",
    "modified": "2017-11-30T11:00:36.717Z"
}

但是现在,我想在上面的文档中添加子文档,键为“proposal”,如下所示

{
    "ID": "16_nl",
    "countryIso": "AUS",
    "regionId": 30,
    "name": "test",
    "placeId": 50,
    "eventID": 100,
    "facilities": [12],
    "proposal": [{      
        "duration": 55,
        "price" : 300,
        "status":"VISIBLE"  
    }],
    "created": "2017-11-30T11:00:36.717Z",
    "modified": "2017-11-30T11:00:36.717Z"
}

我怎样才能在 Solr 中做到这一点?

我已经浏览了http://yonik.com/solr-nested-objects/ 和其他文档,我有以下担忧

  1. 我不明白我们应该如何将子文档映射到“提案”键?
  2. 我认为,诸如“ID”、“countryIso”、“regionId”之类的字段在父文档中定义为必需的,那么在子文档中是否也需要使用这些字段?
4

1 回答 1

1

您必须在特殊键“_childDocuments_”下列出子文档。在 Apache Solr 参考指南中,您将找到此示例和提示“注意特殊的 _childDocuments_ 键需要指示 JSON 中的嵌套文档”:

{
    "id": "1",
    "title": "Solr adds block join support",
    "content_type": "parentDocument",
    "_childDocuments_": [{
        "id": "2",
        "comments": "SolrCloud supports it too!"
    }]
}

请注意子文档也必须具有的 id 字段。

然后使用 Block Join Children Query Parser 通过父属性查找子项,并使用 Block Join Parent Query Parser 通过子项属性查找父项。见https://lucene.apache.org/solr/guide/6_6/other-parsers.html#OtherParsers-BlockJoinQueryParsers

于 2018-02-19T12:07:52.030 回答