【问题标题】:Use Solr to index/search txt file content使用 Solr 索引/搜索 txt 文件内容
【发布时间】:2016-12-19 20:44:56
【问题描述】:

我正在研究比较不同搜索平台在 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?还是我必须将每一行(推文)存储在不同的文件中?

【问题讨论】:

    标签: apache solr


    【解决方案1】:

    您可以使用CSV Update Handler,这将为每一行生成一个文档。

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

    【讨论】:

      【解决方案2】:

      假设两件事:

      #1 您不想为数据输入进行大量编码。

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

      需要注意的几点:

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

      <doc> ... <doc> 将您的案例中的每个条目括起来

      每一列都需要有自己的字段

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

      都需要唯一的 ID。 出于实际目的,如果您可以在电子表格中打开文本文件,在数据之间添加标签列,然后连接行,即使 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>      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-24
        • 2023-04-01
        • 1970-01-01
        • 2011-03-21
        • 2012-01-25
        相关资源
        最近更新 更多