solr 数据导入流程
solr
提供dataimport-Handler
数据导入处理器,工作流程:
solr
通过dataimport-Handler
查询关系数据库中的数据- 对查询到的数据创建索引
配置
- 将
solr\dist\ solr-dataimporthandler-x.x.x.jar
拷贝至solr\contrib\dataimporthandler\lib
- 将
mysql
的驱动包mysql-connector-java-5.1.42.jar
拷贝到solr\contrib\databaseDriver\lib
修改
solrconfig.xml
<!-- 引入 jar 文件路径 --> <lib dir="${solr.install.dir:../}/contrib/dataimporthandler/lib" regex=".*\.jar" /> <lib dir="${solr.install.dir:../}/contrib/databaseDriver/lib" regex=".*\.jar" /> <!-- 配置 dataimport 的 requestHandler --> <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
在
solrHome\collection1\conf
下创建data-config.xml
,保证它的格式是UTF-8 无 BOM 格式编码
<?xml version="1.0" encoding="UTF-8" ?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test" user="root" password="root"/> <document> <entity name="student" query="select est.stu_id,est.stu_name,GROUP_CONCAT(scores) scores from edu_student est join edu_score ese on est.stu_id=ese.stu_id group by est.stu_id"> <!-- column:数据库字段;name:schema.xml 中定义的 field --> <field column="stu_id" name="id" /> <field column="stu_name" name="stu_name" /> <field column="scores" name="stu_scores" /> </entity> </document> </dataConfig>
修改
schema.xml
,添加与data-config.xml
对应的Solr
字段<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <field name="stu_name" type="text_ik" indexed="true" stored="true"/> <field name="stu_scores" type="string" indexed="false" stored="true" multiValued="true"/> <field name="stu_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> <copyField source="stu_name" dest="stu_keywords"/>
测试