使用DataImportHandler在单个实体中有多个变换器

时间:2014-04-03 05:37:19

标签: solr dataimporthandler

我使用DataImportHandler索引Solr中的数据。

我正在从数据库中的AUTO表中的三列中检索数据,其中两列(即TOPIC和PARTS)的数据类型为“CLOB”,列DATE具有保存创建日期的oracle时间戳。

问题出在我的数据配置文件中,我需要将clob数据转换为字符串,并将日期转换为Solr使用的UTC。

所以我需要两个变换器,即ClobTransformer和DateFormatTransformer。

我想知道如何在单个实体中同时使用这两个变换器。

这是我的数据配置文件

<dataConfig>
    <dataSource name="ds1" type="JdbcDataSource"
    driver="oracle.jdbc.OracleDriver"
    url="....."
    user="....."
    password="...."/>
    <document name="doc">
        <entity name="ent" 
                query="Select 
                            auto.ID,
                            auto.Topic as Topic,
                            auto.Parts as Parts,
                            to_date(to_char(auto.Date, 'yyyy-MM-dd HH:MI:SS'), 'YYYY-MM-DD HH:MI:SS') AS Date,
                        From auto 
                        order by auto.Date DESC" 
                dataSource="ds1" transformer="DateFormatTransformer">
            <field column="ID" name="id"/>
            <field column="TOPIC" name="topic" clob="true"/>
            <field column="PARTS" name="parts" clob="true"/>
            <field column="DATE" name="date" xpath="/RDF/item/date" dateTimeFormat="yyyy-MM-dd HH:mm:ss" locale="en"/>
        </entity>
    </document>
</dataConfig>

上面我只使用了DateFormatTransformer。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

好的,我知道它是如何完成的。只需在“变压器”中使用逗号指定特定的变压器即可。标签的这一部分如下:

<dataConfig>
    <dataSource name="ds1" type="JdbcDataSource"
    driver="oracle.jdbc.OracleDriver"
    url="....."
    user="....."
    password="...."/>
    <document name="doc">
        <entity name="ent" 
                query="Select 
                            auto.ID,
                            auto.Topic as Topic,
                            auto.Parts as Parts,
                            to_date(to_char(auto.Date, 'yyyy-MM-dd HH:MI:SS'), 'YYYY-MM-DD HH:MI:SS') AS Date,
                        From auto 
                        order by auto.Date DESC" 
                dataSource="ds1" transformer="ClobTransformer,DateFormatTransformer">
            <field column="ID" name="id"/>
            <field column="TOPIC" name="topic" clob="true"/>
            <field column="PARTS" name="parts" clob="true"/>
            <field column="DATE" name="date" xpath="/RDF/item/date" dateTimeFormat="yyyy-MM-dd HH:mm:ss" locale="en"/>
        </entity>
    </document>
</dataConfig>

我使用过两个变形金刚transformer="ClobTransformer,DateFormatTransformer"