Более одного преобразователя в одном объекте с использованием DataImportHandler

Я использую DataImportHandler для индексации данных в Solr.

Я извлекаю данные из трех столбцов из таблицы AUTO в базе данных, где два столбца, а именно TOPIC и PARTS, имеют данные типа 'CLOB', а столбец DATE имеет метку времени оракула, которая содержит дату создания.

Проблема в моем файле конфигурации данных, где мне нужно преобразовать данные сгустка в строку, а также дату в UTC, которое использует Solr.

Поэтому мне нужны два преобразователя, то есть 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 ответ

Решение

Хорошо, я узнал, как это делается. Просто указав конкретные преобразователи, используя запятые в разделе "трансформатор" тега следующим образом:

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

Другие вопросы по тегам