Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
索引solr中由空格分隔的文本文件的每个单词?_Solr_Solr Cell - Fatal编程技术网

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

索引solr中由空格分隔的文本文件的每个单词?,solr,solr-cell,Solr,Solr Cell,我正在我的应用程序中实现solr 3.6。因为我的文本文件中有以下数据 ** 日期=2011-07-08时间=10:55:06时区=“IST”设备\u name=“CR1000i” 设备\u id=C010600504-TYGJD3部署\u mode=“路由” log\u id=031006209001 log\u type=“防病毒”log\u component=“FTP” log_subtype=“Clean”status=“Denied”priority=Critical fw_rule

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

**

日期=2011-07-08时间=10:55:06时区=“IST”设备\u name=“CR1000i” 设备\u id=C010600504-TYGJD3部署\u mode=“路由” log\u id=031006209001 log\u type=“防病毒”log\u component=“FTP” log_subtype=“Clean”status=“Denied”priority=Critical fw_rule_id=“” user\u name=“hemant”virus=“codevirus”FTP\u URL=“FTP.myftp.com” FTP\u direction=“download”filename=“hemantresume.doc”file\u size=“550k” 文件\u path=“deepti/Shortcut to virus.lnk”ftpcommand=“RETR” src_ip=10.103.6.100 dst_ip=10.103.6.66协议=“TCP”src_端口=2458 dst_port=21 dstdomain=“myftp.cpm”发送字节数=162 recv_字节数=45 message=“从服务器FTP下载大小为550k的resume.doc文件 无法完成ftp.myftp.com,因为文件已感染病毒 代码病毒“

**

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

据我所知,没有任何标记器能做到这一点

使用静态字段:

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

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

使用动态字段:

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


在定义“添加新键/值对”时,客户机仍然需要知道这个新键的存在。但您的索引器不需要这样做

这不能用标记器完成。为每个字段调用标记器,但在将数据传递给字段之前需要进行处理

转换器可能会做到这一点,或者您可以在将其作为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>
  ...

2011-07-08
2011-07-08
IST
CR1000i
...
同样在这个预处理过程中,您几乎肯定希望将前三个字段转换为UTC格式的单个日期时间

有关Solr XML更新格式的详细信息,请参阅:


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

。我已浏览了此链接。。我希望无论何时将上面的行赋给solr..它都应该基于字段对值进行索引..就像我们每次赋给XML..这在标记器中是不可能的。在Solr之外进行处理或编写转换器,正如我在回答中所说的……我将如何编写转换器并使用它进行索引……你能详细说明或提供一些链接吗……实际上,我认为它应该是一个实体处理器。这是我没有使用过的Solr的一部分,但您可以从这里开始:…我已经使用了这个链接..stackoverflow.com/questions/3891054/…我希望无论何时将上述行提供给Solr..它都应该基于字段的值进行索引..就像我们提供XML时一样。这个链接的解决方案是获取key=value和索引术语key,值作为给定字段。您想要的似乎只是“值”被索引为定义为“键”的solr字段。我可以使用PatternTokenizerFactory,这样只有值被索引而不是键。但是我如何映射到该键?请您指导一下?对不起,我想不出一种方法来做这件事。只需预处理文档,在“=”上拆分,只保留值,然后重新组装文档,可能会更容易。