【问题标题】:Index every word of a text file which are delimited by whitespace in solr?索引由solr中的空格分隔的文本文件的每个单词?
【发布时间】:2012-06-27 18:38:21
【问题描述】:

我正在我的应用程序中实现 solr 3.6。因为我的文本文件中有以下数据..

**

日期=2011-07-08 时间=10:55:06 timezone="IST" device_name="CR1000i" device_id=C010600504-TYGJD3 deployment_mode="Route" log_id=031006209001 log_type="防病毒" log_component="FTP" log_subtype="Clean" status="Denied" priority=Critical fw_rule_id="" user_name="hemant" 病毒="codevirus" FTP_URL="ftp.myftp.com" FTP_direction="下载" 文件名="hemantresume.doc" 文件大小="550k" file_path="deepti/virus.lnk 的快捷方式" ftpcommand="RETR" src_ip=10.103.6.100 dst_ip=10.103.6.66 协议=“TCP” src_port=2458 dst_port=21 dstdomain="myftp.cpm" sent_bytes=162 recv_bytes=45 message="从服务器 FTP 下载文件 resume.doc,大小为 550k ftp.myftp.com 无法完成,因为文件感染了病毒 代码病毒”

**

现在我想根据键值对拆分上述数据..并希望根据键对每个值进行索引.. 我希望更改应该在配置文件中..我已经通过了可以使用 whitespaceokenizer 的标记器。但是希望对整个结构进行索引..所以任何人都可以帮助我吗??? 谢谢..

【问题讨论】:

    标签: solr solr-cell


    【解决方案1】:

    使用分词器无法做到这一点。每个字段都会调用标记器,但您需要在将数据交给字段之前进行处理。

    Transformer 可能会执行此操作,或者您可以在将其作为 XML 提交之前进行一些简单的转换。编写读取该格式并为 Solr 提交生成正确 XML 格式的东西应该不难。在 Python 中肯定不会很难。

    对于这个输入:

    date=2011-07-08 time=10:55:06 timezone="IST" device_name="CR1000i"
    

    您需要在架构中创建匹配字段,并生成:

    <doc>
      <field name="date">2011-07-08</field>
      <field name="time">2011-07-08</field>
      <field name="timezone">IST</field>
      <field name="device_name">CR1000i</field>
      ...
    

    同样在此预处理中,您几乎肯定希望将前三个字段转换为 UTC 格式的单个日期时间。

    有关Solr XML更新格式的详细信息,请参见:http://wiki.apache.org/solr/UpdateXmlMessages

    此时 Apache wiki 已关闭,因此如果出现错误页面,请重试。

    【讨论】:

    • ..我已经完成了这个链接..stackoverflow.com/questions/3891054/…我希望每当将上述行提供给 solr..它应该基于字段的值进行索引..就像我们给XML..
    • 分词器无法做到这一点。正如我在答案中所说,在 Solr 之外进行处理或编写转换器。
    • ..我将如何编写转换器并使用它进行索引..你能详细说明或提供一些链接..??
    • 其实我觉得应该是Entity Processor。这是 Solr 的一部分,我没用过,但是你可以从这里开始:wiki.apache.org/solr/DataImportHandler#EntityProcessor
    【解决方案2】:

    据我所知没有分词器可以做到这一点。

    使用静态字段:

    您必须将所有“键”定义为 schema.xml 中的字段。它们应该具有相关类型(日期、字符串等)。

    使用这些字段创建一个 POJO 并解析此键/值对并填充 POJO。使用 solrj 将此 pojo 添加到 solr。

    使用动态字段:

    在这种情况下,您不需要在模式中定义键,而是使用动态字段(基于数据类型)。您仍然需要解析键/值对并添加到 solr 文档。这些字段需要使用 solrInputdoc.addField 方法添加。

    当您定义添加新的键/值对时,客户端仍然需要知道这个新键的存在。但是您的索引器不需要。

    【讨论】:

    • ..我已经完成了这个链接..stackoverflow.com/questions/3891054/...我希望每当将上述行提供给 solr..它应该根据字段索引值..就像我们每次提供 XML 一样。
    • 此链接的解决方案是将 key=value 和索引项 key,value 都作为给定字段。您想要的似乎只想要索引为定义为“键”的 solr 字段的“值”。
    • 我可以使用 PatternTokenizerFactory 所以只有值被索引而不是键..但是我将如何映射到那个键??你能指导一下吗?
    • 抱歉,我想不出办法来做到这一点。预处理文档可能更容易,在“=”上拆分并只保留值,然后重新组装文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多