【问题标题】:How to convert pubDate from rss feed when importing using DIH in Solr?在 Solr 中使用 DIH 导入时如何从 rss 提要转换 pubDate?
【发布时间】:2012-08-15 14:18:08
【问题描述】:

我在 solr 中使用 RSS DIH 来索引各种 rss 提要。我面临的问题是日期字段。 RSS 中的 pubDate 返回不是 Solr 期望的格式,因此当我使用这个 rss-data-config.xml 文件启动我的 Solr 时出现异常。有人可以告诉我如何将 rss 日期转换为 rss-data-config.xml 文件中的 solr 预期日期格式吗?

在 Schema.xml 中,我将 pubDate 定义为日期。

这是我的 rss-data-config.xml 的外观:

<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>

请帮忙。

【问题讨论】:

    标签: solr dih pubdate


    【解决方案1】:

    您想设置 DateFormatTransformer 来处理将日期转换为 solr 期望的格式。

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

    【讨论】:

    • 谢谢,它解决了我遇到的异常并且能够索引文档。我现在将检查 NOW 或 NOW-1DAY 类型的 pubDate 过滤是否有效,这就是我想要做的。再次感谢您。
    • oops 尝试了以下格式 ,我得到的异常是:org.apache.solr.common.SolrException: ERROR: [doc=rss.cnn.com/~r/rss/cnn_allpolitics/~3/R2L1CPDPBJU/] Error added field 'pubDate'='Wed, 15 Aug 2012 14:11:27 EDT ' 可能是什么问题?
    猜你喜欢
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多