ApacheSolr中的多对一映射

ApacheSolr中的多对一映射,solr,Solr,我正在使用Solr为我的报告数据库编制索引。报告可以包含文本、提交者信息等。这目前可以正常工作,如下所示: "docs": [ { "Text": "Some Report Text" "ReportId": "1", "Date": "2013-08-09T14:59:28.147Z", "SubmitterId": "11111", "FirstName": "John", "Last

我正在使用Solr为我的报告数据库编制索引。报告可以包含文本、提交者信息等。这目前可以正常工作,如下所示:

"docs": [
      {
        "Text": "Some Report Text"
        "ReportId": "1",
        "Date": "2013-08-09T14:59:28.147Z",
        "SubmitterId": "11111",
        "FirstName": "John",
        "LastName": "Doe",
        "_version_": 1444554112206110700
      }
 ]
报表可以拥有的另一个功能是查看器(这是单个报表和查看器之间的一对多关系)。我希望能够在JSON输出中捕获这些查看器:

"docs": [
      {
        "Text": "Some Report Text"
        "ReportId": "1",
        "Date": "2013-08-09T14:59:28.147Z",
        "SubmitterId": "11111",
        "FirstName": "John",
        "LastName": "Doe",
        "Viewers": [
            { ViewerId: "22222" },
            { ViewerId: "33333" }
         ]
        "_version_": 1444554112206110700
      }
 ]
然而,我似乎无法做到这一点。这是我的
data config.xml
(删除了问题不需要的部分):


以及
schema.xml



当我导入数据时,我什么也看不到。没有错误,没有明显的错误,但我非常确定我的数据配置和/或模式不正确。我做错了什么?

不幸的是,Solr不允许嵌套(请参阅)。您需要将数据展平

所以

这是不可能的。取而代之的是将其展平,并创建一个
ViewerIds
数组:

"ViewerIds": ["22222", "33333" ]
在模式中,您将拥有:

<field name="ViewerIds" type="string" indexed="true" stored="true" multiValued="true" />

并相应地修改您的数据配置

<field name="ViewerIds" type="string" indexed="true" stored="true" multiValued="true" />