2012-05-04 110 views
2

我目前正在配置nutch和solr來索引網頁及其元數據。 有元數據標籤包含格式爲yyyy-mm-dd的日期,因此他們錯過了所需的時間格式擴展名,以作爲solr.DateField或solr.TrieDateField工作。 我想在日期字段上使用日期範圍,如果不使用這些格式之一就不能工作,對吧?nutch-solr:從網頁元數據格式化日期到正確的Solr格式

目前我的日期被包括在架構文本:

<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

我認爲你的意思是第二個字段定義爲date fieldType,而你有一個字符串,它與第一個定義相同。 – javanna

+0

javanna,非常感謝。我糾正了它。 – qlumbus

回答

1

看一看的DateField docs。它包含日期正確格式的一些示例。這應該是好的:2011-12-05T00:00:00Z。在發送給Solr之前,請不要忘記將日期轉換爲UTC。

但是你的問題更多的是如何告訴nutch索引這個字段作爲日期轉換爲正確的格式。我查看了源代碼,但是我還沒有找到一個開箱即用的方法。我想你應該寫一些代碼,可能會擴展你使用的插件,也許你甚至可以把它回饋給項目。

+0

javanna,謝謝!我查看了這個文檔,並知道正確的格式,但我不知道如何以這種方式格式化我的領域。我對索引的網頁中的日期格式沒有任何影響。在使用nutch獲取它的過程中,將它映射到solr並且包括請求處理程序的模式定義可以將yyyy-mm-dd格式調整爲yyyy-mm-ddThh:mm:ssZ?謝謝! – qlumbus

+1

@qlumbus好點!我可以問你如何告訴nutch使用這些特定的元數據?它只是配置嗎? – javanna

+0

@javenna在nutch-site.xml中,我使用index-metatags插件並指定要提取的元標記,例如'修改 ' – qlumbus