数据库版本:oracle10g
solr版本:solr3.6.1
Solr配置Clob字段
<documentname="bulletin">
<entity name="item" pk="uuid" transformer="ClobTransformer" query="select * from no_bulletin">
<fieldcolumn="UUID"name="id"/>
<fieldcolumn="CONTENT"name="content"clob="true"/>
</entity>
</document>
注:红色部分是配置clob字段必须的,CONTENT必须大些,否则ClobTransformer是不会被执行解析的。(query中的sql语句改成自己的)
Solr配置Blob字段
<dataSourcename="f1"type="FieldStreamDataSource"/>
<dataSourcename="orcle"driver="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@192.168.196.253:1521:orcl"user="sample_bus"password="sample_bus"/>
<document>
<entitydataSource ="orcle"name="attach"query="select att_id,content from no_bul_attcontent where att_id='645cf16b40d4472ca649084c6aa099fe'">
<fieldcolumn="ATT_ID"name="id"/>
<entitydataSource="f1"processor="TikaEntityProcessor"url="content" dataField="attach.CONTENT">
<fieldcolumn="text"name="docContent"/>
</entity>
</entity>
</document>
注意:这里url没有作用,可以去掉(如果dataSource不是数据库,而是本地文件,那这里就是路径,如:url="d:/path ${f.fileAbsolutePath}"等等,f父实体的name),
如果url不对,报无效的sql语句错误。
dataField中attach是父实体的name。attach.CONTENT必须大写,否则报:No field available for name : attach.content Processing Document # 1.
特别注意:数据库中Blob字段名不能与schema.xml中对应的字段同名。否则,Bolb字段导入的结果为<str name="abc">oracle.sql.BLOB@1042c25</str>