標籤:
Solr與Mysql資料庫的整合,實現全量索引、增量索引的建立。
基本原理很簡單:在Solr項目中註冊solr的DataImportHandler並配置Mysql資料來源以及資料查詢sql語句。當我們通過Solr後台控制頁面或者直接存取某個地址(後面給出),Solr就會調用DataImportHandler,串連資料庫,根據sql語句查詢資料,建立索引。
樣本solr版本:solr4.3.1
約定Solr的安裝目錄,如E:\environment\solr-4.3.1為solr-home。
1. 拷貝jar包
將DataImportHandler所在的jar包和mysql的資料庫驅動包Copy到solr-home/dist目錄下。預設情況下該目錄下已存在DataImportHandler所需的兩個jar包。該Solr版本對應的jar包名字是:solr-dataimporthandler-4.3.1.jar、solr-dataimporthandler-extras-4.3.1.jar
2. 修改solr-home\example\solr\collection1\conf\solrconfig.xml檔案
a. 增加所需jar包引用配置:
Html代碼
- <lib dir="../../../dist/" regex="solr-dataimporthandler-.*\.jar" />
- <lib dir="../../../dist/" regex="mysql-connector-java-.*\.jar" />
b. 增加resultHandler配置
Html代碼
- <requestHandler name="/dataimport"
- class="org.apache.solr.handler.dataimport.DataImportHandler">
- <lst name="defaults">
- <str name="config">data-config.xml</str>
- </lst>
- </requestHandler>
3. 在solrconfig.xml的同級目錄下建立data-config.xml檔案,設定資料庫串連和Solr與mysql資料的對應關係和查詢語句。
Html代碼
- <dataConfig>
- <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
- url="jdbc:mysql://127.0.0.1/dbname" user="root" password="root"/>
- <document name="search_object">
- <entity name="talent"
- query="select id, gender, qq, msn, anualSalary, updateTime, addUserId
- from talent">
- <field column="anualSalary" name="salary"/>
- <field column="addUserId" name="userId"/>
-
- <!--Talent Names-->
- <entity name="talent_name" query="select value from talentname where talentId=‘${talent.id}‘">
- <field column="value" name="name"/>
- </entity>
- </entity>
- </document>
- </dataConfig>
4. 重啟Solr。
大量匯入(full-import):
http://<host>:<port>/solr/dataimport?command=full-import&commit=y
增量匯入(delta-import):
http://<host>:<port>/solr/dataimport?command=delta-import&commit=y
匯入狀態查詢(status):
http://<host>:<port>/solr/dataimport
重新裝載設定檔(reload-config):
http://<host>:<port>/solr/dataimport?command=reload-config
終止匯入(abort):
http://<host>:<port>/solr/dataimport?command=abort
Solr與Mysql簡單整合