根据前面的步骤,solr已经与tomcat集成成功,并配置了中文分词器。然而数据库中的数据要怎么同步到solr索引库中呢?
一、建立数据库表
CREATE TABLE `image_info` (
`id` varchar(32) NOT NULL,
`src` text,
`update_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
二、配置solrconfig.xml
打开Solr主目录的conf文件夹下(D:\Java\solr\collection1\conf)的配置文件solrconfig.xml,加入一个请求处理者配置:
<span style="white-space:pre"> </span><!-- 导入数据库配置 -->
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
在后面的数据导入中,请求的就是dataimport这个请求处理器。
三、新建data-config.xml
在同级目录下(D:\Java\solrhome\collection1\conf)新建一个配置文件data-config.xml,加入下面内容:
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/dbname" user="root" password="***" />
<document>
<entity name="imageInfo" query="select id,src,key_info from image_info">
<field column="id" name="id"/>
<field column="src" name="src"/>
<field column="key_info" name="key_info"/>
</entity>
</document>
</dataConfig>
filed域配置数据库表的列名,到scheme.xml配置文件中配置的的索引字段名称的映射。
entity节点中的name属性需唯一,如果存在多个表需要建立索引库,则通过该属性区分。
四、配置schema.xml
<!--iamge_info表字段-->
<field name="src" type="string" indexed="true" stored="true"/>
<field name="key_info" type="textMaxWord" indexed="true" stored="true"/>
因为id字段已经配置了,所以不需要我们加了,它可是必须的,是一个唯一主键。
五、加入jdbc驱动
因为solr需要通过jdbc连接到数据库进行数据同步,所以需在solr工程的lib目录下添加jdbc驱动。
六、加入同步数据的jar包
到solr解压包下的dist目录下solr-dataimporthandler-5.4.1.jar和solr-dataimporthandler-extras-5.4.1.jar这两个jar包,同样放到部署到solr的lib目录下。
启动Tomcat,在浏览器中输入: http://localhost:8080/solr/dataimport?command=full-import 进行全量导入。