使用Solr索引/搜索txt文件内容

时间:2016-12-19 20:44:56

标签: apache solr

我正在研究比较不同搜索平台的性能而不是Twitter的推文。为了我的目的,我收集了一组推文(大约50,000)并将它们保存在一个文本(.txt)文件中,格式类似于以下内容:

Tweet ID    User    Tweet Content   Tweet Time-stamp

数据如下所示:

31261817690923008   username1   tweet 1 content goes here   1482180069
31132193287839744   username2   tweet 2 content goes here   1274400000

现在,使用Solr 6.3.0,是否可以单独索引每行内容?相反,我应该使用XML还是JSON?或者我是否必须将每一行(推文)存储在不同的文件中?

2 个答案:

答案 0 :(得分:1)

您可以使用CSV Update Handler,这会产生每行的单个文档。

要调整解析为您使用的结构,可以使用separator(TAB?%09)提供字段/列之间使用的分隔符encapsulator来设置用于的值封装单个字段值(它似乎没有使用任何)和fieldnames为每列提供正确的字段名称,除非它们位于第一行 - 在这种情况下设置{{1} } to true(并且不提供字段名)。

答案 1 :(得分:1)

假设有两件事:

#1您不希望对数据输入进行大量编码。

#2您的文本文件是TAB或逗号分隔。 如果是这样,您可以轻松将其转换为可通过管理界面添加的XML。

要记住的一些事项:

将您的数据包含在合理大小的<add> ... </add>块中。理想情况下不是50K。实验一点。

<doc> ... <doc>

中附上您案例中的每个条目

每列需要有自己的字段,如

<field name="id"> ... </field>
<field name="username"> ... </field>
...

所有人都需要唯一身份证。 出于实际目的,如果您可以在电子表格中打开文本文件,在数据之间添加标记列,然后连接这些行,即使50K的劳动强度很小,也相对容易。 两个文档集看起来像:

<add>       
<doc>       
<field name="id">   ... </field>
<field name="user"> ... </field>
<field name="content">  ... </field>
<field name="time_stamp">   ... </field>
</doc>      

<doc>       
<field name="id">   ... </field>
<field name="user"> ... </field>
<field name="content">  ... </field>
<field name="time_stamp">   ... </field>
</doc>      
</add>