在Solr中合并两个文档

时间:2017-02-22 13:49:23

标签: solr lucene velocity

我有两个文件(.csv),我想合并它。有可能吗?

这是一个例子

文档1:

<doc>
 <arr name="id">
  <long>200000000</long>
 </arr>
 <arr name="Name">
  <str>Sample</str>
 </arr>
 <arr name="first_name">
  <str>Sally</str>
 </arr>
</doc>

文件2:

<doc>
 <arr name="id">
  <long>200000000</long>
 </arr>
 <arr name="Street">
  <str>Any Street</str>
 </arr>
 <arr name="State">
  <str>Any State</str>
 </arr>
</doc>

它应该是这样的:

<doc>
 <arr name="id">
  <long>200000000</long>
 </arr>
 <arr name="Name">
  <str>Sample</str>
 </arr>
 <arr name="first_name">
  <str>Sally</str>
 </arr>
 <arr name="Street">
  <str>Any Street</str>
 </arr>
 <arr name="State">
  <str>Any State</str>
 </arr>
</doc>

我如何在Solr中执行此操作?我应该创建第二个核心并以某种方式合并它吗? 或者我该怎么办?

2 个答案:

答案 0 :(得分:0)

是的,你可以这样做:

  1. 索引第一个doc Document1
  2. 使用partial updates更新该文档,并附加其他数据:

    {"id":"200000000",
    "Street":{"add":["Any Street"]},
    "State":{"add":["Any State"]}
    }
    
  3. 只需要一个要求:所有字段必须存储(存储=&#34; true&#34;)或docValues(docValues =&#34; true&#34;)

答案 1 :(得分:0)

如果可能,您应该自己合并这些csv文件。这是一个常见问题,您可以 - 例如 - 使用Unix join utility

如果您必须在Solr端进行此操作并且无法将其中一个文件转换为原子更新,则可以留意SOLR-9530,但尚未发布。