我使用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。
非常感谢任何帮助。
答案 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"