从 Nutch 将 SolrRecord 添加到索引的时间

Posted

技术标签:

【中文标题】从 Nutch 将 SolrRecord 添加到索引的时间【英文标题】:Time of SolrRecord being added to Index from Nutch 【发布时间】:2016-02-10 05:19:53 【问题描述】:

我正在运行 Solr 5.4.1 和 Nutch 1.11 我也在使用 Apache Nifi,尤其是 GetSolr 处理器。

我了解 SolrRecord 中的 tstamp 是获取索引中的值的时间。

我面临的挑战是让 GetSolr 进程在无人值守的 NiFi 中工作,我需要提供一个日期字段来过滤。如果我使用 tstamp,它只会在第一次填充我的数据流,之后 tstamp 过滤器会排除未来值,因为它正在查看索引时间,而不是记录被摄取到 Solr 中的时间。

所以我的问题是:如何在 bin\nutch 索引时在我的 SolrRecord 中包含一个字段,该字段将包含插入 Solr 的时间戳,而不是由爬虫获取。

【问题讨论】:

【参考方案1】:

我认为你有两个选择...

您可以在 Solr schema.xml 中添加一个新的日期字段,默认值为 NOW:

<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>

您可以使用 TimestampUpdateProcessorFactory: https://lucene.apache.org/solr/5_4_1/solr-core/org/apache/solr/update/processor/TimestampUpdateProcessorFactory.html

在 solrconfig.xml 中,您可以将其添加到更新链中:

<updateRequestProcessorChain name="add-timestamp-field">
    <processor class="solr.TimestampUpdateProcessorFactory">
       <str name="fieldName">timestamp</str>
    </processor>
</updateRequestProcessorChain>

如果使用更新链,需要启用add-timestamp-field链:

<initParams path="/update/**">
  <lst name="defaults">
    <str name="update.chain">add-timestamp-field</str>
  </lst>
</initParams>

【讨论】:

以上是关于从 Nutch 将 SolrRecord 添加到索引的时间的主要内容,如果未能解决你的问题,请参考以下文章

通过Nutch扩展点开发插件(添加自定义索引字段到solr)

Nutch + Hbase

Nutch源码阅读进程3

使用nutch搭建类似百度/谷歌的搜索引擎

使用nutch搭建类似百度/谷歌的搜索引擎

Nutch的初步搭建(IDEA)