nutch-solr: Форматирование даты из метаданных веб-страницы в правильный формат Solr

В настоящее время я настраиваю nutch и solr для индексации веб-страниц и их метаданных. Существуют теги метаданных, содержащие даты в формате гггг-мм-дд, поэтому они пропускают необходимое расширение формата времени для работы в качестве 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, чтобы поля даты были в правильном формате?

Большое спасибо!

Всего наилучшего


person qlumbus    schedule 04.05.2012    source источник
comment
Я думаю, вы имели в виду второе определение поля как date fieldType, в то время как у вас есть строка, которая совпадает с первым определением.   -  person javanna    schedule 04.05.2012
comment
Джаванна, спасибо большое. Я исправил это.   -  person qlumbus    schedule 04.05.2012


Ответы (1)


Просмотрите DateField документы. Он содержит несколько примеров правильного формата даты. Это должно быть нормально: 2011-12-05T00:00:00Z. Не забудьте преобразовать дату в формат UTC перед отправкой в ​​Solr.

Но ваша проблема больше в том, как указать nutch индексировать это поле как дату, преобразовав его в правильный формат. Я просмотрел исходный код, но не нашел выхода из коробки. Я думаю, вам следует написать какой-нибудь код, возможно, расширить плагин, который вы используете, возможно, вы даже могли бы внести его обратно в проект.

person javanna    schedule 04.05.2012
comment
Джаванна, спасибо! Я просмотрел этот документ и знаю правильный формат, но я не знаю, как отформатировать таким образом свое поле. Я не имею никакого влияния на формат даты на индексируемых веб-страницах. Где в процессе извлечения с помощью nutch, сопоставления с solr и определения схемы, включая обработчики запросов, я могу настроить формат гггг-мм-дд на гггг-мм-ддThh:mm:ssZ? Спасибо! - person qlumbus; 04.05.2012
comment
@qlumbus Хороший вопрос! Могу я спросить, как вы говорите Nutch использовать эти конкретные метаданные? Это только конфигурация? - person javanna; 04.05.2012
comment
@javenna В nutch-site.xml я использую плагин index-metatags и указываю метатеги для извлечения, например. <property> <name>metatags.names</name> <value>Date Modified</value> </property> - person qlumbus; 04.05.2012
comment
Я преобразовал его в конечный формат Z, используя new Date().toISOString(), и SOLR, похоже, принимает это. - person user644745; 02.07.2012