solr除了利用solrj建立索引外,还可以由列式数据库hbase触发器添加索引,自动全量或者增量索引关系数据库数据等.

dataimport可以配置从任何关系数据库导入索引

1.将jar包拷贝到tomcat/webapps/solr/web-inf/lib下面

mysql-connector-java-5.1.6.jar
solr-dataimporthandler-5.3.1.jar
solr-dataimporthandler-extras-5.3.1.jar
solr-dataimportscheduler-1.1.jar

2.tomcat/webapps/solr/web-inf/web.xml添加监听

<listener>
    <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
</listener>

3.solr_home下建立conf目录,conf目录下建立dataimport.properties文件

syncEnabled=1
syncCores=test
server=192.168.126.205
port=8080
webapp=solr
#增量
params=/dataimport?command=delta-import&clean=false&commit=true
#schedule interval default 30min
interval=1
#重做索引的时间间隔,单位分钟,默认7200就是1天
#为空为0或者注释掉,表示永不重做索引
reBuildIndexInterval=2
#重做索引的参数
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
#重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000
#两种格式:2012-04-11 03:10:00或者 03:10:00,后一种会自动补全日期部分为服务启动的日期
reBuildIndexBeginTime=

4.solr_home下对应core下的conf目录下建立data-config.xml文件

<dataConfig>
    <dataSource type="JdbcDataSource"
                driver="com.mysql.jdbc.Driver"
                url="jdbc:mysql://192.168.1.105:3306/test"
                user="root"
                password="root"/>
    <document>
        <entity name="id"
                query="select id,arm,name from user">
        </entity>
    </document>
</dataConfig>

5.solr_home下对应core下的conf下修改schema.xml

<field name="arm" type="string" indexed="true" stored="true" />

因为name已经存在了,所以就不添加了

6.solr_home下对应core下的conf下修改solrconfig.xml

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>         
    </lst>
</requestHandler>

此后数据库有更新,就会导入到solr中