之前将Solr的基础环境搭建了起来。今天配置一下数据库的增量导入。实现步骤wiki上面写的已经很清楚,主要注意两点,一是索引的中文分词,二是自定义字段。solr自带的schema.xml中已经配置了常用字段,遇不包含字段需要定义。依wiki,实现solr索引定时增量导入大致需五步。
第一步,配置requesthandler于solrconfig.xml内容如下
class="org.apache.solr.handler.dataimport.DataImportHandler">
./data-config.xml
用到的jar包solr-dataimporthandler-4.3.0.jar位于solr-4.3.0\dist,需要拷贝到tomcat/webapps/lib下。
第二步,编写data-config.xml和dataimport.properties。solr发布包中随带了一个demo位于solr-4.3.0\example\example-DIH\solr\db\conf直接拿来稍作修改
url="jdbc:mysql://localhost:3306/solr_import" user="root" password="admin"/>
deltaQuery="select id from item where last_modified > '${dataimporter.last_index_time}'">
query="select DESCRIPTION from FEATURE where ITEM_ID='${item.ID}'"
deltaQuery="select ITEM_ID from FEATURE
where last_modified > '${dataimporter.last_index_time}'"
parentDeltaQuery="select ID from item where ID=${feature.ITEM_ID}">
query="select CATEGORY_ID from item_category where ITEM_ID='${item.ID}'"
deltaQuery="select ITEM_ID, CATEGORY_ID from
item_category where last_modified > '${dataimporter.last_index_time}'"
parentDeltaQuery="select ID from item where ID=${item_category.ITEM_ID}">
query="select DESCRIPTION from category where ID = '${item_category.CATEGORY_ID}'"
deltaQuery="select ID from category where last_modified > '${dataimporter.last_index_time}'"
parentDeltaQuery="select ITEM_ID, CATEGORY_ID
from item_category where CATEGORY_ID=${category.ID}">
#Fri Jan 17 11:44:56 CST 2014
interval=1
port=80
server=localhost
params=/dataimport?command\=delta-import&clean\=false&commit\=true
webapp=solr
reBuildIndexInterval=2
dataimporter.last_index_time=1914-01-14 17\:40\:00
syncEnabled=1
last_index_time=2014-01-17 11\:44\:55
item.last_index_time=2014-01-17 11\:44\:55
reBuildIndexParams=/dataimport?command\=full-import&clean\=true&commit\=true
reBuildIndexBeginTime=03\:10\:00
syncCores=collection1
第三步,修改schema.xml支持中文分词。data-config.xml中filed引用schema.xml中的filedType,而schema.xml中name,manu等字段类行为text_general,需要改为之前配置的text_zh.
第四步建数据库,数据库脚本也都是现成的,位于solr-4.3.0\example\example-DIH\hsqldb\ex.script。demo是基于sqldb的,稍作修改即可用于mysql。将数据库驱动拷到lib。insert N笔数据(中文)作为测试。
第五步,建索引。依次打开solr控制台-——>dataimport,command首次选full-import,勾选commit,Entity选择item——>execute。
索引结果如何?在solr控制台左侧选择Query,q填写name:关键字,execute query。效果如图