从Solr中的多个文本文件导入

时间:2014-01-07 23:59:30

标签: solr dataimporthandler

我有两个文本文件,称为A.txt和B.txt。 A.txt和B.txt都有3个字段。但语义不同。我们将这些字段命名如下:

A.txt : f1, f2, f3
B.txt : f1, f2, f4

A.txt和B.txt具有相同的f1和f2值,但具有不同的第三个字段。

我想将这些文件导入Solr(我正在使用Solr 4.5)。但需要注意的是,A.txt和B.txt中的相应条目必须合并为一个单独的文档。例如,如果我们有:

A.txt
1,50,foo
51,100,bar

B.txt
1,50,xkcd
51,100,qc

在dataimport发生后,Solr中应该有2个文档:

1,50,foo,xkcd
51,100,bar,qc

如果文档存储在SQL数据库中,那么它将是一个简单的连接查询。但由于文档存储为CSV文件中的行,并且我使用带有转换器函数的LineEntityProcessor来执行dataimport,有没有办法完成此任务?

1 个答案:

答案 0 :(得分:1)

  

我想将这些文件导入Solr(我正在使用Solr 4.5)。但需要注意的是,A.txt和B.txt中的相应条目必须合并为一个单独的文档...在dataimport发生后,Solr中应该有2个文档

这不会按照您的意图行事。默认情况下,Solr将文档更新视为事务性删除和插入的功能等效项。

使用Solr 4,atomic update功能允许更新某些字段,而不会影响其余的文档字段数据。这些工作方式存在局限性,因为它需要有关更新的元数据并且需要XML或JSON格式。但是,您识别的文本文件结构不适用于此。

我的建议:省去头痛并写一个文件合并脚本,它结合你的文本文件,在将它存储在Solr之前产生你想要的记录。