nutch-solr:将网页元数据中的日期格式化为正确的Solr格式

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配置中做出改变才能得到正确格式的日期字段吗?

非常感谢!

祝一切顺利!


1
我认为你的第二个字段定义应该是日期类型,而你却使用了字符串类型,这与第一个定义相同。 - javanna
1个回答

1
请查看DateField文档。其中包含一些日期正确格式的示例。这应该没问题:2011-12-05T00:00:00Z。在将其发送到Solr之前,请不要忘记将日期转换为UTC。
但是,您的问题更多地是如何告诉nutch将此字段索引为日期并将其转换为正确的格式。我查看了源代码,但没有找到解决方案。我猜您应该编写一些代码,可能需要扩展您正在使用的插件,甚至可以将其贡献回项目中。

Javanna,谢谢!我看了这个文档,知道了正确的格式,但是我不知道如何以这种方式格式化我的字段。我对索引的网页中的日期格式没有任何影响。在从nutch获取它、映射到solr并包括请求处理程序的模式定义过程中,我可以在哪里调整格式yyyy-mm-dd为yyyy-mm-ddThh:mm:ssZ?谢谢! - Kristof K.
1
@qlumbus 很好的观点!我可以问一下你是如何告诉nutch使用这些特定的元数据的吗?这只是配置吗? - javanna
@javenna 在nutch-site.xml中,我使用index-metatags插件并指定要提取的元标记,例如:<property> <name>metatags.names</name> <value>Date Modified</value> </property> - Kristof K.
我使用了 new Date().toISOString() 将其转换为尾随的 Z 格式,SOLR 似乎可以接受这种格式。 - user644745

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接