Как преобразовать pubDate из RSS-канала при импорте с использованием DIH в Solr?

Я использую RSS DIH в solr для индексации различных RSS-каналов. Проблема, с которой я сталкиваюсь, заключается в поле даты. Возврат pubDate в RSS не в том формате, который ожидает Solr, и поэтому я получаю исключение, когда запускаю Solr с этим файлом rss-data-config.xml. Может ли кто-нибудь сказать мне, как я могу преобразовать дату rss в формат ожидаемой даты solr в файле rss-data-config.xml?

В Schema.xml я определил pubDate как дату.

here is how my rss-data-config.xml looks:

<dataConfig>
    <dataSource type="URLDataSource" name="dsurl"/>
    <dataSource type="JdbcDataSource" name="dsdb" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/HCDACoreDB" user="root" password="CDA@318"/>
    <document>
        <entity name="rssimports"
                pk="link"
                url="${dataimporter.request.feedurl}"
                processor="XPathEntityProcessor"
                forEach="/rss | /rss/channel | /rss/channel/item"
                transformer="HTMLStripTransformer"
                dataSource="dsurl">

            <field column="source" xpath="/rss/channel/title" commonField="true" dataSource="dsurl"/>
            <field column="source-link" xpath="/rss/channel/link" commonField="true" dataSource="dsurl"/>
            <field column="Source-desc" xpath="/rss/channel/description" commonField="true" dataSource="dsurl"/>

            <field column="title" xpath="/rss/channel/item/title" dataSource="dsurl"/>
            <field column="link" xpath="/rss/channel/item/link" dataSource="dsurl"/>
            <field column="description" xpath="/rss/channel/item/description" stripHTML="true" dataSource="dsurl"/>
        <field column="pubDate" xpath="/rss/channel/item/pubDate" dataSource="dsurl"/>

            <field column='${dataimporter.functions.formatDate('${dataimporter.request.pubDate}', 'EEE, dd MMM YYYY HH:mm:ss z')}' name="pubDate"/>
            <field column="guid" xpath="/rss/channel/item/guid" dataSource="dsurl"/>
            <field column="content" xpath="/rss/channel/item/content" dataSource="dsurl"/>
            <field column="author" xpath="/rss/channel/item/creator" dataSource="dsurl"/>


        <entity name="feedcategory" 
                query="select category.CategoryName from feeds, category where feeds.FeedUrl = '${dataimporter.request.feedurl}' AND feeds.FeedCategory = category.CategoryId"
                processor="SqlEntityProcessor" 
                dataSource="dsdb">
            <field column="CategoryName" name="category" dataSource="dsdb"/>
        </entity>
        </entity>
    </document>
</dataConfig>

Пожалуйста, помогите.


person Jayku    schedule 15.08.2012    source источник


Ответы (1)


Вы хотите настроить DateFormatTransformer для получения даты в формате, который ожидает solr.

http://wiki.apache.org/solr/DataImportHandler#DateFormatTransformer

person Brett Thomas    schedule 15.08.2012
comment
Спасибо, это устранило исключение, которое я получал, и смог проиндексировать документ. Сейчас я проверю, работает ли тип фильтрации NOW или NOW-1DAY на pubDate, это то, что я хотел сделать. Еще раз спасибо. - person Jayku; 15.08.2012
comment
oops попробовал следующее в формате ‹field column=pubDate xpath=/rss/channel/item/pubDate dateTimeFormat=EEE, d MMM YYYY HH:mm:ss z dataSource=dsurl/› и исключение, которое я получаю: org.apache .solr.common.SolrException: ОШИБКА: [doc=rss. cnn.com/~r/rss/cnn_allpolitics/~3/R2L1CPDPBJU/] Ошибка при добавлении поля 'pubDate'='Wed, 15 Aug 2012 14:11:27 EDT' В чем может быть проблема? - person Jayku; 16.08.2012