版本:solr4.4.0 jdk1.6 tomcat7,端口8066
1:安裝solr
在/opt目錄下建立solr檔案夾
将tomcat,solr4.4.0上傳并解壓
進入/opt/solr/solr-4.4.0/dist,找到solr.war
将solr.war檔案複制到tomcat的/opt/solr/apache-tomcat-7.0.8/webapps目錄下,
啟動tomcat,解壓solr.war,關閉tomcat,删除solr.war
将/opt/solr/solr-4.4.0/example/lib/ext下的所有的jar包複制到tomcat下solr的
/opt/solr/apache-tomcat-7.0.8/webapps/solr/WEB-INF/lib檔案夾下。
将/opt/solr/solr-4.4.0/example/resources下的log4j.properties同樣複制到tomcat下solr的
/opt/solr/apache-tomcat-7.0.8/webapps/solr/WEB-INF/lib檔案夾下。
然後在/solr目錄下建立solrHome檔案夾
将/opt/solr/solr-4.4.0/example目錄下的solr目錄
以及/opt/solr/solr-4.4.0下的contrib和dist目錄
複制到solrHome檔案夾下。
找到/opt/solr/apache-tomcat-7.0.8/webapps/solr/WEB-INF下的web.xml,
找到如下代碼:修改标簽<env-entry-value>中的值,指定為自己的solrhome目錄。
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/opt/solr/solrHome/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
啟動tomcat,通路http://192.168.1.24:8066/solr,會出現solr的管理界面
2:配置solr連接配接資料庫,導入資料
将/opt/solr/solr-4.4.0/dist下的solr-dataimporthandler-4.4.0.jar
solr-dataimporthandler-extras-4.4.0.jar
以及mysql資料庫驅動包,mysql-connector-java-5.1.6(1).jar
放到tomcat下solr下的/opt/solr/apache-tomcat-7.0.8/webapps/solr/WEB-INF/lib目錄下。
在solrHome下的/opt/solr/solrHome/solr/collection1/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>
并将solrConfig.xml中的contrib和dist目錄位址修改為自己的,<dataDir>${solr.data.dir:}</dataDir> 預設是solrHome下,collection1的目錄位置,按照目錄向上就可以。
在/opt/solr/solrHome/solr/collection1/conf目錄下增加data-config.xml檔案,添加如下内容:
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.1.24:3308/bootdo"
user="root"
password="123456"/>
<document name="content">
<entity name="node" query=" select user_id,`name`,username,email,`status` from sys_user ">
<field column="user_id" name="id" />
<field column="name" name="name" />
<field column="username" name="username" />
<field column="email" name="email" />
<field column="status" name="status" />
</entity>
</document>
</dataConfig>
此處我查的是使用者表,将使用者表進行了全局索引。
在/opt/solr/solrHome/solr/collection1/conf下的schema.xml中加入自己查詢的字段:
Id是唯一的,本來就有,不用添加。
在這裡, <field name="username" type="text_ik" indexed="true" stored="true"/>我的使用者名的type指定的是text_ik,采用了中文分析器,按照使用者名查詢的時候會進行分詞。
此處連接配接資料庫就配置完成。
重新開機tomcat,通路solr。
在collection1下點選dataimport,點選excute進行導入.
然後在Query頁面點選Excute Query就可以查詢到我們導入的資料,也可以加條件查詢。
3:配置中文分詞器
将IKAnalyzer2012_FF.jar 和 IKAnalyzer2012FF_u1.jar複制到
/opt/solr/apache-tomcat-7.0.8/webapps/solr/WEB-INF/lib目錄下。
在/opt/solr/solrHome/solr/collection1/conf目錄下的schema.xml中添加分詞器的
配置:
<!-- 配置IK分詞器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
添加兩個字段進行分詞測試:
<field name="title_ik" type="text_ik" indexed="true" stored="true" />
<field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>
如圖所示,solr管理界面,選擇Analysis,輸入一段話,選擇text_ik分詞。
沒有進行分詞的效果:
4:定時實時重建索引和增量更新
将mysql中的資料導入到了solr中之後,如果資料庫中的資料有變動,solr中還是第一次導入的舊的資料,這時候就需要實作實時重建索引和增量更新。
準備工作要做好:
1、下載下傳jar包:solr-dataimportscheduler-1.1.jar http://pan.baidu.com/s/1hsySs2S
2、建立檔案:dataimport.properties,檔案複制下面的就好,具體配置含義已給出注釋:
#################################################
# #
# dataimport scheduler properties #
# #
#################################################
# to sync or not to sync
# 1 - active; anything else - inactive
# 這裡的配置不用修改
syncEnabled=1
# which cores to schedule
# in a multi-core environment you can decide which cores you want syncronized
# leave empty or comment it out if using single-core deployment
# 修改成你所使用的core,我這裡是我自定義的core:simple
syncCores=simple
# solr server name or IP address
# [defaults to localhost if empty]
這個一般都是localhost不會變
server=localhost
# solr server port
# [defaults to 80 if empty]
# 安裝solr的tomcat端口,如果你使用的是預設的端口,就不用改了,否則改成自己的端口就好了
port=8066
# application name/context
# [defaults to current ServletContextListener's context (app) name]
# 這裡預設不改
webapp=solr
# URL params [mandatory]
# remainder of URL
# 這裡改成下面的形式,solr同步資料時請求的連結
params=/dataimport?command=delta-import&clean=false&commit=true
# schedule interval
# number of minutes between two runs
# [defaults to 30 if empty]
#這裡是設定定時任務的,機關是分鐘,也就是多長時間你檢測一次資料同步,根據項目需求修改
# 開始測試的時候為了友善看到效果,時間可以設定短一點
interval=1
# 重做索引的時間間隔,機關分鐘,預設7200,即5天;
# 為空,為0,或者注釋掉:表示永不重做索引
reBuildIndexInterval=7200
# 重做索引的參數
reBuildIndexParams=/select?qt=/dataimport&command=full-import&clean=true&commit=true
# 重做索引時間間隔的計時開始時間,第一次真正執行的時間=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
# 兩種格式:2012-04-11 03:10:00 或者 03:10:00,後一種會自動補全日期部分為服務啟動時的日期
reBuildIndexBeginTime=03:10:00
準備好這一個jar包和dataimport.properties檔案,開始下面的步驟……
步驟一:将solr-dataimportscheduler-1.1.jar包複制到/opt/solr/apache-tomcat-7.0.8/webapps/solr/WEB-INF/lib中。
步驟二:在/opt/solr/apache-tomcat-7.0.8/webapps/solr/WEB-INF/目錄下的web.xml檔案中添加監聽配置:
<listener>
<listener-class>
org.apache.solr.handler.dataimport.scheduler.ApplicationListener
</listener-class>
</listener>
複制上面這段時注意org.apache.solr.handler.dataimport.scheduler.ApplicationListener後面不要有空格,不然啟動tomcat會有奇怪的錯誤.
步驟三:在\solrhome目錄下建立一個conf檔案夾(與simple檔案夾同目錄),将dataimport.properties檔案放在conf檔案夾中。
步驟四:重新開機tomcat,通路solr管理界面:
我們查詢一條資料:username:”linlinlin”,注意此時,查詢到的name為”linlinlin123”,
和我們資料庫中是一緻的。
然後我們在資料中修改name為123,然後等待一分鐘,檢視solr查詢界面是否改變。
可以看到查詢結果已經發生改變。