索引文本文件中由solr中的空格分隔的每个单词?

时间:2012-06-26 12:33:29

标签: solr solr-cell

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

**

  

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

**

现在我想基于键值对分割上面的数据..并希望根据键对每个值进行索引。 我希望更改应该在配置文件中..我已经通过了标记器,其中whitespaceokenizer可能工作。但希望整个结构被索引..所以任何人都可以帮我这个??? 感谢..

2 个答案:

答案 0 :(得分:1)

我知道没有令牌器可以做到这一点。

使用静态字段:

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

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

使用动态字段:

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

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

答案 1 :(得分:0)

使用tokenizer无法做到这一点。为每个字段调用标记符,但在将数据传递到字段之前需要进行处理。

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在这个时刻出现故障,所以如果有错误页面,请再试一次。