Indexing Solr 5.2中的嵌套字段

Indexing Solr 5.2中的嵌套字段,indexing,nested,field,multivalue,Indexing,Nested,Field,Multivalue,我是Solr的新手,我有一个非常具体的问题需要解决: 我有一个包含Solr文档的csv文件。现在,我有一个列(字段),它不仅是多值的,而且还包含“子字段” 比如说 "id":"0101", "addMaterials":[{"name":"Mat1", "property":"prop1"}, {"name":"Mat2","property":"prop2"}, {"name":"Mat3","property":"prop3"}], "mainProper

我是Solr的新手,我有一个非常具体的问题需要解决: 我有一个包含Solr文档的csv文件。现在,我有一个列(字段),它不仅是多值的,而且还包含“子字段” 比如说

"id":"0101",
"addMaterials":[{"name":"Mat1", "property":"prop1"},          
    {"name":"Mat2","property":"prop2"},
    {"name":"Mat3","property":"prop3"}],
"mainProperty":"mainproperty1",
"URL":"http://www.mySite..."
其中id、addMaterials、mainProperty和URL是我的主字段,“name”和“property”是我的子字段。我知道Solr是为处理非规范化文档而设计的,但对于我的应用程序来说,非规范化不是一个可行的解决方案

我的想法是分离数据集,将字段(包含子字段)移动到另一个文档中,并以某种方式创建一个新字段,将其链接到原始文档(例如fromIdField)

有没有其他解决办法?我的最低目标是索引addMaterials字段的值(即使没有索引子字段)

发件人:


提前谢谢。

我已经找到了解决问题的办法。我没有分离数据集,而是将addMaterials字段保留为多值字段,并忽略子字段。所以我只有一个多值字段需要索引。我所做的是使用Solr的更新/请求为我的csv文件编制索引,并在我的addMaterials多值字段中将{作为分隔符

"addMaterials": ["[{\"name\":\"Mat1\", \"property\":\"prop1\"",
                 "\"name\":\"Mat2\", \"property\":\"prop2\"",
                 "\"name\":\"Mat3\", \"property\":\"prop3\"}]"]
我使用以下方法为文档编制索引:

curl "http://localhost:8983/solr/<coreName>/update/csv?
      stream.file=C:/userName/Solr/solr-5.2.0/documentFolder/myFile.csv&
      f.addMaterials.split=true&
      f.addMaterials.separator=\},\{&
      stream.contentType=text/plain;charset=utf-8"
curl”http://localhost:8983/solr//update/csv?
stream.file=C:/userName/Solr/Solr-5.2.0/documentFolder/myFile.csv&
f、 addMaterials.split=true&
f、 addMaterials.separator=\}\{&
stream.contentType=text/plain;字符集=utf-8“
此外,这假设addMaterials字段是一个多值字段。因此,请确保在使用上述过程为文档编制索引之前先修改架构。否则,它将给出一个错误,表明f.不是一个多值字段


当然,如果您需要查询子字段,那么我想您可以使用Solr的!join命令/函数。

我找到了解决问题的方法。我没有分离数据集,而是将addMaterials字段保留为多值字段,并忽略了子字段。因此,我只有一个多值字段需要索引。我所做的是使用Solr的更新/请求为我的csv文件编制索引,并在我的addMaterials多值字段中将{作为我的分隔符。索引文档如下所示:

"addMaterials": ["[{\"name\":\"Mat1\", \"property\":\"prop1\"",
                 "\"name\":\"Mat2\", \"property\":\"prop2\"",
                 "\"name\":\"Mat3\", \"property\":\"prop3\"}]"]
我使用以下方法为文档编制索引:

curl "http://localhost:8983/solr/<coreName>/update/csv?
      stream.file=C:/userName/Solr/solr-5.2.0/documentFolder/myFile.csv&
      f.addMaterials.split=true&
      f.addMaterials.separator=\},\{&
      stream.contentType=text/plain;charset=utf-8"
curl”http://localhost:8983/solr//update/csv?
stream.file=C:/userName/Solr/Solr-5.2.0/documentFolder/myFile.csv&
f、 addMaterials.split=true&
f、 addMaterials.separator=\}\{&
stream.contentType=text/plain;字符集=utf-8“
此外,这假设addMaterials字段是一个多值字段。因此,请确保在使用上述过程为文档编制索引之前先修改架构。否则,它将给出一个错误,表明f.不是一个多值字段


当然,如果您需要查询子字段,那么我想您可以使用Solr的!join命令/函数。

我找到了解决问题的方法。我没有分离数据集,而是将addMaterials字段保留为多值字段并忽略子字段。因此,我只有一个多值字段需要索引。我所做的是使用Solr为我的csv文件编制索引并放置}的更新/请求,{作为addMaterials多值字段中的分隔符。索引文档如下所示:我找到了问题的解决方案。我没有分离数据集,而是将addMaterials字段保留为多值字段,并忽略了子字段。因此,我只有一个多值字段需要索引。我所做的是使用Solr的更新/请求要索引我的csv文件并将}作为我的分隔符放入我的addMaterials多值字段中。索引文档如下所示: