天天看點

solr安裝部署,使用,實作實時重建索引和增量更新

版本:solr4.4.0     jdk1.6   tomcat7,端口8066

1:安裝solr

在/opt目錄下建立solr檔案夾

solr安裝部署,使用,實作實時重建索引和增量更新

将tomcat,solr4.4.0上傳并解壓

solr安裝部署,使用,實作實時重建索引和增量更新

進入/opt/solr/solr-4.4.0/dist,找到solr.war

solr安裝部署,使用,實作實時重建索引和增量更新

将solr.war檔案複制到tomcat的/opt/solr/apache-tomcat-7.0.8/webapps目錄下,

啟動tomcat,解壓solr.war,關閉tomcat,删除solr.war

solr安裝部署,使用,實作實時重建索引和增量更新

将/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檔案夾

solr安裝部署,使用,實作實時重建索引和增量更新

将/opt/solr/solr-4.4.0/example目錄下的solr目錄

以及/opt/solr/solr-4.4.0下的contrib和dist目錄

複制到solrHome檔案夾下。

solr安裝部署,使用,實作實時重建索引和增量更新

找到/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的管理界面

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目錄下。

solr安裝部署,使用,實作實時重建索引和增量更新
solr安裝部署,使用,實作實時重建索引和增量更新

在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的目錄位置,按照目錄向上就可以。

solr安裝部署,使用,實作實時重建索引和增量更新

在/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是唯一的,本來就有,不用添加。

solr安裝部署,使用,實作實時重建索引和增量更新

在這裡, <field name="username" type="text_ik" indexed="true" stored="true"/>我的使用者名的type指定的是text_ik,采用了中文分析器,按照使用者名查詢的時候會進行分詞。

此處連接配接資料庫就配置完成。

重新開機tomcat,通路solr。

solr安裝部署,使用,實作實時重建索引和增量更新

在collection1下點選dataimport,點選excute進行導入.

solr安裝部署,使用,實作實時重建索引和增量更新

然後在Query頁面點選Excute Query就可以查詢到我們導入的資料,也可以加條件查詢。

solr安裝部署,使用,實作實時重建索引和增量更新

3:配置中文分詞器

将IKAnalyzer2012_FF.jar 和 IKAnalyzer2012FF_u1.jar複制到

/opt/solr/apache-tomcat-7.0.8/webapps/solr/WEB-INF/lib目錄下。

solr安裝部署,使用,實作實時重建索引和增量更新

在/opt/solr/solrHome/solr/collection1/conf目錄下的schema.xml中添加分詞器的

配置:

 <!--  配置IK分詞器 -->  

    <fieldType name="text_ik" class="solr.TextField">

      <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>

</fieldType>

solr安裝部署,使用,實作實時重建索引和增量更新

添加兩個字段進行分詞測試:

<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安裝部署,使用,實作實時重建索引和增量更新

如圖所示,solr管理界面,選擇Analysis,輸入一段話,選擇text_ik分詞。

solr安裝部署,使用,實作實時重建索引和增量更新

沒有進行分詞的效果:

solr安裝部署,使用,實作實時重建索引和增量更新

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檔案夾中。

solr安裝部署,使用,實作實時重建索引和增量更新

步驟四:重新開機tomcat,通路solr管理界面:

我們查詢一條資料:username:”linlinlin”,注意此時,查詢到的name為”linlinlin123”,

和我們資料庫中是一緻的。

solr安裝部署,使用,實作實時重建索引和增量更新

然後我們在資料中修改name為123,然後等待一分鐘,檢視solr查詢界面是否改變。

solr安裝部署,使用,實作實時重建索引和增量更新

可以看到查詢結果已經發生改變。

繼續閱讀