描述:
在Linux環境下實現高速的全文檢索
一、當前環境:
CentOS (Linux) 6.3 64 bit
二、所需軟件
1、Java的JDK
Java jdk 1.7.0【注意:solr5.x版本必須安裝java 1.7及以上版本】
2、Solr最新穩定版Solr-5.1.0
3、Tomcat最新穩定版Tomcat-7.0.72【也可以進入到solr的安裝目錄下,執行bin/solr start命令即可啟動solr自帶的服務器jetty】
4、IK Analyzer最新穩定版分詞器IKAnalyzer2012
三、Tomcat安裝
1、 安裝jdk
yum install java-1.7.0-openjdk
2、 下載Tomcat
http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.72/bin/
(如果找不到請到http://mirror.bit.edu.cn/ 官網點擊”apache”進入選擇相應版本下載)
3、解壓tomcat並且放到指定目錄下
#tar zxvf apache-tomcat-7.0.72.tar.gz
#mv apache-tomcat-7.0.72/ /usr/local/tomcat
4、刪除tomcat下無用的文件,避免安全問題
#cd /usr/local/tomcat/webapps/
#rm -rf *
(如果想測試是否安裝成功,那么就新建一個test
目錄,在下面放一個index.html文件進行測試)
5、啟動tomcat
#/usr/local/tomcat/bin/startup.sh
6、關閉tomcat
#/usr/local/tomcat/bin/shutdown.sh
四、Solr配置
1、 下載Solr
http://mirror.bit.edu.cn/apache/lucene/solr/
2、 解壓並且配置Solr
#tar zxvf solr-5.1.0.tgz
a. 將solr-5.1.0/server/webapps/solr.war目錄下的solr.war拷貝到tomcat安裝目錄的webapps下(如:/usr/local/tomcat/webapps/),啟動tomcat解壓“solr.war”,tomcat會自動解壓solr.war;
b. 新建solr索引目錄:/home/solr;
c. 把官網下載的solr(本文為:solr-5.1.0.tgz)解壓目錄中的"solr-5.1.0/server/solr"目錄下的所有內容復制到/home/solr中。
3、配置/home/solr
修改tomcat/webapps/solr/WEB-INF/web.xml,,取消注釋,配置“env-entry-value”的值為自定義的solr索引目錄

1 <env-entry> 2 3 <env-entry-name>solr/home</env-entry-name> 4 5 <env-entry-value>/home/solr</env-entry-value> 6 7 <env-entry-type>java.lang.String</env-entry-type> 8 9 </env-entry>
4、配置日志
將solr目錄下server/lib/ext中的jar包copy到tomcat的solr/WEB-INF/lib下。這時候雖然添加jar包,但是沒有對應的日志配置,需要將solr-5.1.0/server/resources下的log4j.properties也放到solr/WEB-INF/classes/下,如果沒有classes文件夾則新建一個。
5.添加一個核core0
在/home/solr文件夾下:
1)創建core0
mkdir core0
2)復制/home/solr/configsets/basic_configs/conf到core0中
cp -rp ./configsets/basic_configs/conf core0/ 【建議:為縮短目錄深度,將basic_configs/conf/*目錄直接復制到/hom/solr/conf中】
3)在http://localhost:8080/solr管理頁面添加core0
a.第一步:
b.第二步:dataDir可以自己命名
6、 重新關閉再開啟tomcat
7、瀏覽器打開 http://localhost:8080/solr
驗證是否安裝成功。出現solr管理界面的則表示成功!
到這里基本上Solr和Tomcat結合已經完成了,那么下面配置分詞。
五、配置IK Analyzer中文分詞器
這里說下分詞器:
常用的開源分詞器有庖丁、MMseg4j,另外還有IKAnalyzer。之前在項目中一直MMseg4j,它有個缺點就是自定義詞庫的時候比較麻煩。三個中選IK Analyzer是因為它自定義詞庫簡單以及效率非常卓越。
1、 下載分詞器
https://code.google.com/p/ik-analyzer/downloads/list
這里選擇的是 IKAnalyzer2012_u1.zip (因為比這個版本新的其他的幾款在測試的時候都出現問題)
2、 解壓並且放置到所需位置
#unzip IKAnalyzer2012_u1.zip
解壓之后里面只有三個文件 一個jar 一個stopword.dic還有一個配置文件IKAnalyzer.cfg.xml
a、 將jar放置到tomcat下的solr的WEB-INF下的lib中
#cp IKAnalyzer2012FF_u1.jar /usr/local/tomcat/webapps/solr/WEB-INF/lib/
b、 在tomcat下的solr的WEB-INF下創建一個目錄classes
然后將stopword.dic及配置文件IKAnalyzer.cfg.xml
c、 修改Solr中core下的配置文件schema.xml需要指定所需分詞的字段,例如:
<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
這里需要注意的是:這段代碼需要在<types></types> 之間添加,還有就是name=”text_ik”指定的類型需要是下面的field中所有的(具體可以搜索下”solr schema.xml”配置詳解)
注:在需要使用中文索引的字段上加上type="text_ik"
參考:http://www.cnblogs.com/likehua/archive/2012/12/26/2834650.html
截圖:

d、 重啟Tomcat並且進行測試
我這里以core0為例子,(在實際生產環境中,每個core都需要修改配置文件進行上述的配置的)

六、自定義詞庫(添加詞、去掉排除詞)
在實際生產環境中,可能會需要添加一些特定的行業詞,IKAnalyzer的配置文件可以很好的解決這個問題。
1、 添加行業詞

打開IKAnalyzer.cfg.xml 然后會看到配置文件寫的很清楚,只要安裝stopword.dic的格式自定義一個名字,例如xxx.dic 放在當前的同一級目錄下,並且在配置文件IKAnalyzer.cfg.xml中指定可以訪問到即可了。(這里需要注意的是詞庫文件編碼格式必須為UTF-8無BOM頭)
例如我自定義了一個叫:yanglei.dic的,里面寫了一個詞:楊磊,那么分詞結果出來的就完全不一樣了
(下面是未配置自定義添加詞前的分詞結果)

(配置自定義添加詞后的分詞結果)

2、 添加排除詞
這個就簡單了,直接編輯stopword.dic 接着之前的排除詞添加就可以了
參考:
Solr core配置文件(schema.xml、solrconfig.xml)配置項說明參考網址如下:
http://www.blogjava.net/conans/articles/379545.html
http://www.cnblogs.com/chenying99/archive/2012/04/19/2457195.html
http://www.360doc.com/content/12/1122/10/11098634_249482489.shtml