1. 程式人生 > >solr-4.10.4環境搭建+匯入資料庫+中文分詞

solr-4.10.4環境搭建+匯入資料庫+中文分詞

solr配置
1.安裝java

2.安裝tomcat
注意,修改tomcat的字元編碼:
這裡寫圖片描述

3.將solr-4.10.4.zip壓縮包解壓

4.將exmaple/webapps中的solr.war包解壓開復制到Tomcat的webapps中,
或者直接將solr.war包直接複製到Tomcat的webapps中,
複製example/lib/ext目錄中的jar包放到webapps/solr/WEB-INF/lib下

設定日誌,將example/resources/log4j.properties也拷
webapps/solr/WEB-INF/lib/classes目錄,classes需要自行建立,
這裡要注意,這個properties中的配置為:

/**
log4j.appender.file.File=${solr.log}/solr.log, solr.log為tomcat啟動時指定的變數,如果沒指定,日誌檔案可能會寫到其他目錄下。其實這裡直接寫成絕對路徑也是不錯的選擇。
**/

然後啟動Tomcat使
其解壓開再將war包刪除

5.將example/solr目錄拷貝到solrhome 資料夾中,並重命名為solrhome

6.設定solrhome 開啟solr/WEB-INF/web.xml檔案,找到env-entry

 <!--
    solr home檔案位置 
  -->
    <env-entry
>
<env-entry-name>solr/home</env-entry-name> <env-entry-value>E:\solrhome</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>

7.注意
這裡寫圖片描述

linux:

1.vi /opt/tomcat/conf/server.xml
2.cp solr-4.5.0/dist/solr-4.5.0.war /opt/tomcat/webapps/solr.war
3.vi /opt/tomcat/webapps/solr/WEB-INF/web.xml 4.solr4.3+的war包中不包含任何日誌的jar包,你需要自己手動新增 5. cp solr-4.5.0/example/lib/ext/* /opt/tomcat/webapps/solr/WEB-INF/lib/ 6. mkdir /opt/tomcat/webapps/solr/WEB-INF/classes/ 7. cp solr-4.5.0/example/resources/log4j.properties /opt/tomcat/webapps/solr/WEB-INF/classes/

2.解壓後,將IKAnalyzer2012FF_u1.jar拷貝到:
webapps/solr/WEB-INF/lib

3.將IKAnalyzer.cfg.xml和stopword.dic拷貝到:solr_home/core0(或collection1)/conf

4.修改schema.xml,新增:

    <!--- 配置中文分詞器-->    
    <fieldtype name="text_ik" class = "solr.TextField">
            <analyzer type="index" inMaxWordLength="true" class ="org.wltea.analyzer.lucene.IKAnalyzer" />
            <analyzer type="query" inMaxWordLength="true" class ="org.wltea.analyzer.lucene.IKAnalyzer" />
    </fieldtype>

5.重啟tomcat

匯入資料庫資料
1.solrconfig.xml 配置
使用DataImportHandler匯入並索引資料

  <!-- 
    新增資料庫匯入功能
  -->
   <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
     <lst name="defaults">  
       <str name="config">E:\solrhome\collection1\conf\db\db-data-config.xml</str>  
     </lst>  
  </requestHandler>  

2.匯入jar和資料庫驅動包,放到webapps/solr/WEB-INF/lib
solr-dataimporthandler-4.10.4.jar
solr-dataimporthandler-extras-4.10.4.jar
資料庫驅動包

3.E:\solrhome\collection1\conf 下建立db資料夾,建立檔案:db-data-config.xml

  <dataConfig>
         <dataSource type="JdbcDataSource" 
         driver="com.mysql.jdbc.Driver"
         url="jdbc:mysql://127.0.0.1/goods" user="root" password="root"/>

     <document name="goods">
         <entity name="book" transformer="ClobTransformer"  pk="bid"
                query="select bid,bname,author,price,currprice,discount,press,publishtime,edition,pagenum,wordnum,printtime,booksize,paper from t_book">  

             <field column="bid" name="id" /> 必須為id
             <field column="bname" name="bname"/>
             <field column="author" name="bauthor"/>
             <field column="price" name="bprice"/>
             <field column="currprice" name="bcurrprice"/>
             <field column="discount" name="bdiscount"/>
             <field column="press" name="bpress"/>
             <field column="publishtime" name="bpublishtime"/>
             <field column="edition" name="bedition"/>
             <field column="pagenum" name="bpagenum"/>
         </entity>

     </document>
 </dataConfig>

<!--
說明:
dataSource是資料庫資料來源。
Entity就是一張表對應的實體,pk是主鍵,query是查詢語句。
Field對應一個欄位,column是資料庫裡的column名,
後面的name屬性對應著Solr的Filed的名字。
-->

4 修改schema.xml,這是Solr對資料庫裡的資料進行索引的模式
(1)保留version 這個field
(2)新增索引欄位:這裡每個field的name要和db-data-config.xml裡的entity的field的name一樣,一一對應。

<field name="_version_" type="long" indexed="true" stored="true"/> 

    <!--

        資料庫欄位配置:    
    -->
    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
    <field name="bname" type="text_ik" indexed="true" stored="true" multiValued="true"/>
    <field name="bauthor" type="text_ik" indexed="true" stored="true" multiValued="true"/>
    <field name="bprice" type="text_ik" indexed="true" stored="true" multiValued="true"/>
    <field name="bcurrprice" type="text_ik" indexed="true" stored="true" multiValued="true"/>
    <field name="bdiscount" type="text_ik" indexed="true" stored="true" multiValued="true"/>
    <field name="bpress" type="text_ik" indexed="true" stored="true" multiValued="true"/>
    <field name="bpublishtime" type="text_ik" indexed="true" stored="true" multiValued="true"/>
    <field name="bedition" type="text_ik" indexed="true" stored="true" multiValued="true"/>
    <field name="bpagenum" type="text_ik" indexed="true" stored="true" multiValued="true"/>      


    <uniqueKey>id</uniqueKey>

5 刪除多餘的field,刪除copyField裡的設定,注意:text這個field不能刪除,否則Solr啟動失敗。

   <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>

6 設定唯一主鍵:id,注意:Solr中索引的主鍵預設
是隻支援type=”string”字串型別的,而如果資料庫中id是int型的,會有問題,解決方法:修改同目錄下的elevate.xml,註釋掉下面2行,這貌似是Solr的Bug,原因不明。

<doc id="MA147LL/A" />
<doc id="IW-02" exclude="true" />

7 重啟Solr,如果配置正確就可以啟動成功。

solrconfig.xml是solr的基礎檔案,裡面配置了各種web請求處理器、請求響應處理器、日誌、快取等。

schema.xml配置映射了各種資料型別的索引方案。分詞器的配置、索引文件中包含的欄位也在此配置。

8.點選Dataimport,Command選擇full-import(預設),點選“Execute”,Refresh Status就可以看到結果