開源搜索引擎solr4.0+tomcat7實現中文分詞

 2012年12月16日,solr4.0正式版發佈,因爲其新功能比較給力(特別是關於分佈式的新特性,關聯zookeeper等),因此準備替換掉老版本java

官網下載solr4.0:http://lucene.apache.org/solr/linux

mmseg4j分詞下載:http://code.google.com/p/mmseg4j/downloads/listweb

詞庫下載:http://code.google.com/p/mmseg4j/downloads/detail?name=data.zip&can=2&q= apache

系統:centos 6.2(64位)centos

ip地址:192.168.1.124tomcat

tomcat:apache-tomcat-7.0.29bash

下載完成後就開始正式配置了cookie

一.安裝準備app

調整系統參數webapp

/etc/sysctl.conf配置文件中增長以下內核參數

 

  
  
  
  
  1. net.ipv4.tcp_tw_reuse = 1 
  2. net.ipv4.tcp_tw_recycle = 1 
  3. net.ipv4.tcp_fin_timeout = 5 

而後sysctl -p查看一下

附:net.ipv4.tcp_syncookies = 1參數在centos6.2中自己就有,因此我沒有加,沒有的可本身手動填上

二.安裝及配置過程

1.安裝tomcat

不作演示,詳情見:http://5142926.blog.51cto.com/5132926/960900

修改tomcat配置文件/conf/server.xml

<Connector port="8093" protocol="HTTP/1.1" 

connectionTimeout="20000" 

URIEncoding="UTF-8" /> 

附:即填上utp-8防止中文亂碼

2.安裝配置solr

(1).解壓下載的apache-solr-4.0.0,在他的dist目錄下有個文件叫作apache-solr-4.0.0.war,將這個文件拷貝到tomcat的webapps/目錄下,並重命名爲solr.war

(2).新建/opt/solr-tomcat/solr文件夾,把下載的solr包example/solr文件夾下面的全部文件放入到 /opt/solr-tomcat/solr裏面

(3).1) 最後一步 配置添加solr.home環境變量,能夠有種方式(兩種取其一便可):

a)基於環境變量

 linux在當前用戶的環境變量中(.bash_profile)或在./bin/catalina.sh中添加以下環境變量

  
  
  
  
  1. export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr-tomcat/solr" 

b)基於JNDI

  在tomcat的conf文件夾創建Catalina文件夾,而後在Catalina文件夾中在創建localhost文件夾,在該文件夾下面創建 solr.xml,Xml代碼:

  
  
  
  
  1. <Context docBase="/usr/local/tomcat/webapps/solr.war" debug="0" crossContext="true" >   
  2.   <Environment name="solr/home" type="java.lang.String" value="/opt/solr-tomcat/solr" override="true" />  
  3. </Context>  

附:以上路徑都要相互對應

(4).驗證安裝

訪問http:192.168.1.124:8093/solr

附:tomcat默認端口8080,固然我這裏改爲了8093,你們注意一下

三.中文分詞配置

1.將下載到的mmseg4j-1.9.0.v20120712-SNAPSHOT.zip解壓,將其目錄下的mmseg4j-all-1.9.0.v20120712-SNAPSHOT.jar拷貝到tomcat中webapps/solr/WEB-INF/lib中

2./opt/solr-tomcat/solr目錄下新建dic文件夾,將解壓後的data目錄下的words.dic拷貝到/opt/solr-tomcat/solr/dic目錄下

3.更改schema.xml(/opt/solr-tomcat/solr/collection1/conf)文件,使分詞器起到做用

 

  
  
  
  
  1. <types> 
  2.  …… 
  3.     <!--mmseg4j field types--> 
  4.        <fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >   
  5.             <analyzer>   
  6.                <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="/opt/solr-tomcat/solr/dic"/>   
  7.                <filter class="solr.LowerCaseFilterFactory"/>   
  8.            </analyzer>   
  9.        </fieldType>   
  10.  
  11.      <fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" >   
  12.         <analyzer>   
  13.             <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="/opt/solr-tomcat/solr/dic"/>   
  14.             <filter class="solr.LowerCaseFilterFactory"/>   
  15.         </analyzer>   
  16.      </fieldType>   
  17.       
  18.      <fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100" >   
  19.        <analyzer>   
  20.            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="/opt/solr-tomcat/solr/dic"/>   
  21.            <filter class="solr.LowerCaseFilterFactory"/>   
  22.        </analyzer>   
  23.      </fieldType> 
  24.      …… 
  25.  </types> 
  26. <fields> 
  27.     …… 
  28. <field name="simple" type="textSimple" indexed="true" stored="true" multiValued="true"/>   
  29. <field name="complex" type="textComplex" indexed="true" stored="true" multiValued="true"/>   
  30. <field name="text" type="textMaxWord" indexed="true" stored="true" multiValued="true"/> 
  31.     …… 
  32. </fields> 
  33.  
  34. <copyField source="simple" dest="text"/> 
  35. <copyField source="complex" dest="text"/> 

附:dicPath="/opt/solr-tomcat/solr/dic"是你本身的詞庫路徑

4.重啓tomcat

訪問http:192.168.1.124:8093/solr

點擊下方的collection1,其中有個analysis,點擊,以下圖

在Field Value (Index)中隨便輸入幾行漢字,類型選擇complex進行解析

至此,完工,關聯分佈式還在探索ing,後續......

相關文章
相關標籤/搜索