oracle或者mysql数据库可能会保存pdf,word等富文本数据,solr提供了clob转换器,对于blob大致有两种实现方式:1.可以自定义transformer转换器。2.可以在data-config.xml进行嵌套entity标签的方式实现。
一:数据库结构
表名 :testtesttable
blob测试的数据可以在solr文件夹下找到
xxx\solr-8.0.0\example\exampledocs
二:solr配置
data-config.xml配置
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource name="f1" type="FieldStreamDataSource"/>
<dataSource
name ="mysql1"
type="JdbcDataSource"
driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql:///test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC"
user="root"
password="root"/>
<document>
<entity dataSource="mysql1"
name="testtable" transformer="ClobTransformer" query="SELECT ID,NAME,WENJIAN FROM testtable ">
<field column="ID" name="id1"/>
<field column="NAME" name="name1"/>
<entity dataSource="f1" processor="TikaEntityProcessor" url="content" dataField="testtable.WENJIAN" name="testtable">
<field column="text" name="wenjian1"/>
</entity>
</entity>
</document>
</dataConfig>
managed-schema.xml配置
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
<field name="id1" type="string" indexed="true" stored="true" />
<field name="name1" type="string" indexed="true" stored="true" />
<!-- 此处使用了分词 -->
<field name="wenjian1" type="text_ik" indexed="true" stored="true" />
jar包配置
lucene-analyzers-smartcn-8.0.0.jar
solr-dataimporthandler-8.0.0.jar
solr-dataimporthandler-extras-8.0.0.jar
mysql-connector-java-8.0.13.jar
solr-8.0.0\contrib\extraction\lib <–solr的文件夹下所有
我也是刚接触solr没多久,正好遇到这个问题,通过不断的查询找到了以上的解决办法。、
参考资料
http://simpleframework.net/news/view?newsId=380d1d1aaec246b9a5acfc7ed5d3afe5
http://bbs.51cto.com/thread-1002849-1.html
https://blog.youkuaiyun.com/iteye_5159/article/details/82515819
https://blog.youkuaiyun.com/wangch_sk/article/details/8907366
书籍《solr权威指南》