3

我目前正在配置 nutch 和 solr 来索引网页及其元数据。元数据标签包含格式为 yyyy-mm-dd 的日期,因此它们缺少用作 solr.DateField 或 solr.TrieDateField 所需的时间格式扩展。我想在日期字段上使用日期范围,如果没有这些格式之一,就不能工作,对吧?

目前,我的日期作为文本包含在架构中:

<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
... 
<field name="Date Modified" type="string" stored="true" indexed="true" multiValued="true"/>

每当我将其用于字段定义时...

<fieldType name="date" class="solr.TrieDateField" omitNorms="true" positionIncrementGap="0"/>
<field name="Date Modified" type="date" stored="true" indexed="true" multiValued="true"/>

...我收到此错误消息:

2012-05-02 23:45:58,370 WARN  mapred.LocalJobRunner - job_local_0029
org.apache.solr.common.SolrException: ERROR: [doc=http://ec.gc.ca/] Error adding field     'Date Modified'='2011-12-05'

ERROR: [doc=http://ec.gc.ca/] Error adding field 'Date Modified'='2011-12-05'

request: http://localhost:8983/solr/update?wt=javabin&version=2
    at     org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:430)
    at     org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java    :244)
    at     org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.j    ava:105)
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:49)
    at org.apache.nutch.indexer.solr.SolrWriter.close(SolrWriter.java:93)
    at     org.apache.nutch.indexer.IndexerOutputFormat$1.close(IndexerOutputFormat.java:48)
    at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:474)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:411)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:216)
2012-05-02 23:45:58,966 ERROR solr.SolrIndexer - java.io.IOException: Job failed!

我浏览了不同的论坛,但没有找到有效的解决方案。可能是我错过了有关数据导入处理的一些内容。我是否需要更改 nutch 配置中的某些内容以获取正确格式的日期字段?

非常感谢!

一切顺利

4

1 回答 1

1

看看DateField文档。它包含一些正确日期格式的示例。这应该没问题:2011-12-05T00:00:00Z。在将日期发送到 Solr 之前,不要忘记将日期转换为 UTC。

但是您的问题更多是如何告诉 nutch 将此字段索引为日期,并将其转换为正确的格式。我查看了源代码,但我还没有找到开箱即用的方法。我想你应该写一些代码,可能扩展你正在使用的插件,也许你甚至可以将它贡献回项目。

于 2012-05-04T09:33:58.570 回答