安裝solr

轉載請註明出處http://lucien-zzy.iteye.com/blog/2002087

這篇文章講解了哪兒些功能的實現呢?

        第一:能通過http://localhost:7080/solr/ 正常訪問solr,介紹三種solr/home的配置方式(這裏用JNDI方式實現)分別爲:基於JNDI、基於當前路徑、基於環境變量的方式

        第二:實現三種中文分詞器的安裝,包括:smartcn 分詞器、IK 分詞器、mmseg4j分詞器、

        第三:實現中英停詞詞庫、sogou詞庫、擴展詞庫的安裝

        第四:簡單介紹下拼音分詞器的安裝,拼音檢索主要是要支持suggest,目前還沒有發現Solr能 很好的實現拼音檢索的功能,隨後會發表一片介紹用Lucene來自定義實現漢語轉拼音,切分,並能很好的支持suggest。


運行環境:

   運行系統:windows7(這裏以windows7做實例,windows、Linux等系統下的搭建大同小異)
   運行容器:apache-tomcat-7.0.37-windows-x64
   Solr版本:solr-4.3.1


準備工作:

   下載tomcat 7: http://tomcat.apache.org/download-70.cgi
   下載Solr4.3.1:http://archive.apache.org/dist/lucene/solr/
   下載IKAnalyzer的發行包:http://ik-analyzer.googlecode.com/files/IK%20Analyzer%202012FF_hf1.zip
   下載mmseg4j的發行包:https://mmseg4j.googlecode.com/files/mmseg4j-1.9.1.zip
   下載smartcn的發行包:smartcn是跟solr同步的,solr例中有,所以不需要額外的下載
   下載sogou詞庫:http://code.google.com/p/mmseg4j/downloads/detail?name=sogou-dic-utf8.zip&   can=2&q
   下載中文停詞詞庫:見附件(英文停詞詞庫在安裝IK分詞器的時候順便已經安裝)
   下載pinyinAnalyzer:見附件
   下載拼音pinyin4j-2.5.0:http://pinyin4j.sourceforge.net/(附件中也有)
   下載lucene-4.3.1:見附件(拼音分詞我們需要裏面的lucene-analyzers-common-4.3.1.jar和lucene-core-4.3.1.jar,附件中有這倆jar,如果你下載了lucene-4.3.1,解壓後在lucene-4.3.1\analysis\common和lucene-4.3.1\core中可以找到這倆jar包)


開始部署:

第一:能通過http://localhost:7080/solr/ 正常訪問solr(包含三種solr/home的配置方式的介紹)


1.F盤下新建winsolr文件夾,將下載的Tomcat壓縮包考進winsolr,(若能保證此Tomcat端口與本機其他Tomcat端口不衝突則不需改端口)解壓後修改tomcat\conf下的server.xml文件將Server port=“”端口改爲:7005
     protocol="HTTP/1.1" 的port改爲:7080


2.保證tomcat啓動及環境正常


3.將下載的 solr-4.3.1.zip 解壓 ,將solr-4.3.1\dist\solr-4.3.1.war文件複製到tomcat的webapps目錄下,並將文件命名爲solr.war


注:war是一個完整的web應用程序,包括了solr的jar文件和所有運行Solr所依賴的Jar文件,Jsp和很多的配置文件與資源文件。


4.修改tomcat\conf下的server.xml文件

<Connector port="7080" protocol="HTTP/1.1"
       connectionTimeout="20000"
       URIEncoding="UTF-8"
       redirectPort="8443" />

  增加URIEncoding="UTF-8" 中文支持。

5.配置solr/home(可以有三種方式,這裏是用基於JNDI的方式實現)


方式一:基於JNDI的方式


       1).F:\winsolr下新建solr_home文件夾


       2).複製solr-4.3.1\example下的solr文件夾到F:\winsolr\solr_home裏。注:該目錄爲solr的應用環境目錄。


       3).在F:\winsolr\solr_home\solr\collection1下新建data目錄


       4).修改F:\winsolr\solr_home\solr\collection1\conf裏的solrconfig.xml文件中的dataDir一行內容爲:


<dataDir>${solr.data.dir:F:\winsolr\solr_home\solr\collection1\data}</dataDir>



注:目的是爲了指定存放索引數據的路徑。(F:\winsolr\solr_home\solr\collection1\data 這個 data 目錄需要自己創建 也可以任意指定路徑)。在4.3.1版本中 solr下面沒有了 conf文件 多了一個 collection1,在solr.xml配置文件中


<em>     <cores adminPath="/admin/cores" defaultCoreName="collection1" host="${host:}"    
         hostPort="${jetty.port:8983}" hostContext="${hostContext:solr}"
          zkClientTimeout="${zkClientTimeout:15000}">
        <core name="collection1" instanceDir="collection1" />
     </cores>
   </solr></em>


明確指出了 conf的位置 也可以修改 <core name="collection1" instanceDir="collection1" /> 改變其目錄路徑 ,默認加載 conf文件下面的內容。


       5).新建tomcat\conf\Catalina\localhost目錄 在此目錄下新建solr.xml文件,文件中增加


<?xml version="1.0" encoding="UTF-8"?>
                    
<Context docBase="F:\winsolr\apache-tomcat-7.0.37\webapps\solr.war" debug="0" crossContext="true">
                    
<Environment name="solr/home" type="java.lang.String" value="F:\winsolr\solr_home\solr" override="true"/>
                    
</Context>


注:其中docBase爲tomcat的webapps下的solr.war完整路徑。Environment的value屬性的值爲存放solr索引的文件夾。

      6).將 solr-4.3.1\example\lib\ext下的所有jar文件複製到tomcat\lib下重啓tomcat。
注:不然會報404頁面找不到

   7).重啓Tomcat,訪問 http://localhost:7080/solr 訪問成功說明配置正常完成,如圖:


f075a558-4464-32e4-83e3-750dca897828.jpg
注:查看 solr的logging會出現:
   19:44:42 WARN SolrResourceLoader Can't find (or read) directory to add to classloader: ../../../contrib/extraction/lib (resolved as: F:\winsolr\solr_home\solr\collection1\..\..\..\contrib\extraction\lib).
   這樣的警告;其實這是因爲找不到 對應的jar包造成的。完成接下來的配置這個警告就會消失。



方式二:基於當前路徑的方式


           這種情況需要在F:\winsolr\solr_home\目錄下去啓動tomcat,Solr查找./solr,因此在啓動時候需要切換到F:\winsolr\solr_home\


方式三:基於環境變量的方式

       windows在環境變量中建立solr.home,值爲F:\winsolr\solr_home\
       linux在當前用戶的環境變量中(.bash_profile)或在catalina.sh中添加如下環境變量export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=F:\winsolr\solr_home\solr"

第二:實現三種中文分詞器的安裝,包括:smartcn 分詞器、IK 分詞器、mmseg4j分詞器

(smartcn 、mmseg4j建議讀者在完成擴展詞和拼音分詞以後再試,以免中間出錯影響擴展詞和拼音分詞的體驗)


A:IK 分詞器安裝

1.將之前解壓的solr-4.3.1 下的contrib和dist 文件夾複製到F:\winsolr\solr_home\solr\collection1下

2.將下載的IKAnalyzer的發行包解壓,解壓後將IKAnalyzer2012FF_u1.jar(分詞器jar包)複製到F:\winsolr\solr_home\solr\collection1\contrib\analysis-extras\lib下

3.在F:\winsolr\apache-tomcat-7.0.37\webapps\solr\WEB-INF下新建classes文件夾

4.將IKAnalyzer解壓出來的IKAnalyzer.cfg.xml(分詞器配置文件)和 Stopword.dic(分詞器停詞字典,可自定義添加內容)複製到
 F:\winsolr\apache-tomcat-7.0.37\webapps\solr\WEB-INF\classes中

5.在F:\winsolr\solr_home\solr\collection1\conf下的schema.xml文件中fieldType name="text_general"這個地方的上方添加以下內容

Java代碼  收藏代碼
  1. <!--配置IK分詞器-->  

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

  3.     <!--索引時候的分詞器-->  

  4.    <analyzer type="index" isMaxWordLength="false"class="org.wltea.analyzer.lucene.IKAnalyzer"/>  

  5.          <!-- 查詢時候的分詞器 -->  

  6.    <analyzer type="query" isMaxWordLength="true"class="org.wltea.analyzer.lucene.IKAnalyzer"/>  

  7. </fieldType>  


並將<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>中的type值改爲text_ik


6.修改F:\winsolr\solr_home\solr\collection1\conf下的solrconfig.xml文件,指定jar包路徑

Java代碼  收藏代碼
  1. <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />  

  2. <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />  

  3. <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />  

  4. <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />  

  5. <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />  

  6. <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />  

  7. <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />  

  8. <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />  

改爲:


Java代碼  收藏代碼
  1. <lib dir="F:\winsolr\solr_home\solr\collection1\contrib\analysis-extras\lib" regex=".*\.jar" />  

  2. <lib dir="F:\winsolr\solr_home\solr\collection1\contrib\extraction\lib" regex=".*\.jar" />  

  3. <lib dir="F:\winsolr\solr_home\solr\collection1\dist\" regex="solr-cell-\d.*\.jar" />  

  4. <lib dir="F:\winsolr\solr_home\solr\collection1\contrib\clustering\lib\" regex=".*\.jar" />  

  5. <lib dir="F:\winsolr\solr_home\solr\collection1\dist\" regex="solr-clustering-\d.*\.jar" />  

  6. <lib dir="F:\winsolr\solr_home\solr\collection1\contrib\langid\lib\" regex=".*\.jar" />  

  7. <lib dir="F:\winsolr\solr_home\solr\collection1\dist\" regex="solr-langid-\d.*\.jar" />  

  8. <lib dir="F:\winsolr\solr_home\solr\collection1\contrib\velocity\lib" regex=".*\.jar" />  

  9. <lib dir="F:\winsolr\solr_home\solr\collection1\dist\" regex="solr-velocity-\d.*\.jar" />  


現在來驗證下是否添加成功:

首先啓動solr服務,啓動過程中如果出錯,一般有三個原因:

一是配置的分詞器jar找不到,也就是你沒有複製jar包到\solr\contrib\analysis-extras\lib目前下;
二是solrconfig.xml文件指定的jar路徑有誤。
三是分詞器版本不對導致的分詞器接口API不一樣出的錯,要是這個錯的話就在檢查分詞器的相關文檔,看一下支持的版本是否一樣.

如果在啓動過程中沒有報錯的話說明配置成功了.
接下來我們重啓Tomcat,進入到http://localhost:7080/solr地址進行測試一下剛加入的中文分詞器.

在首頁的Core Selector中選擇你配置的Croe後點擊下面的Analysis,
在Field Value (Index)裏輸入:中國人
在Analyse Fieldname / FieldType:裏選擇text,然後點擊右面Analyse Values

如果分出 中國人 中國  國人這三個詞 說明IK 分詞器安裝成功!如圖:



d0198215-eef2-380d-b8c0-0649da39e9bd.jpg


B:mmseg4j分詞器安裝

1.將下載的mmseg4j的發行包解壓,將解壓出的mmseg4j-analysis-1.9.1.jar  mmseg4j-core-1.9.1.jar   mmseg4j-solr-1.9.1.jar
 這三個jar包複製到F:\winsolr\solr_home\solr\collection1\contrib\analysis-extras\lib中

2.在F:\winsolr\solr_home\solr\collection1\conf下的schema.xml文件中fieldType name="text_general"這個地方的上方添加以下內容

Java代碼  收藏代碼
  1. <!--配置mmseg4j分詞器-->  

  2.    <fieldType name="text_msg"class="solr.TextField" positionIncrementGap="100">  

  3.         <analyzer type="index">  

  4.         <!--索引時候的分詞器-->  

  5.           <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory"/>  

  6.         </analyzer>  

  7.         <analyzer type="query">  

  8.         <!-- 查詢時候的分詞器 -->  

  9.           <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory"/>  

  10.         </analyzer>  

  11.       </fieldType>  

如果要引用,同IK配置一樣,將field標籤中的 type值改爲text_msg即可。


3.修改solrconfig.xml文件(和IK配置同樣)


現在來驗證下是否成功:

重啓Tomcat
接下來我們可以進入到http://localhost:7080/solr地址進行測試一下剛加入的中文分詞器.

Analyse Fieldname / FieldType:選text,測試內容爲:中華人民共和國


如果分出 中華人民共和國中華人民中華華人人民共和國  人民 共和國 等詞 說明mmseg4j分詞器安裝成功!


C: smartcn 分詞器安裝(smartcn的分詞準確率不錯,但就是不能自己定義新的詞庫)

1.將之前解壓的solr-4.3.1下contrib\analysis-extras\lucene-libs中的lucene-analyzers-smartcn-4.3.1.jar包
 複製到F:\winsolr\solr_home\solr\collection1\contrib\analysis-extras\lib中

2.修改schema.xml文件,在fieldType name="text_general"這個地方的上方添加以下內容

Java代碼  收藏代碼
  1. <fieldType name="text_smartcn"class="solr.TextField" positionIncrementGap="0">  

  2.      <analyzer type="index">  

  3.        <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>  

  4.        <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>  

  5. </analyzer>  

  6.      <analyzer type="query">  

  7.         <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>  

  8.        <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>  

  9.      </analyzer>  

  10. </fieldType>  

如果要引用,同IK配置一樣,將field標籤中的 type值改爲text_smartcn即可

3.修改solrconfig.xml文件(和IK配置同樣)

好啦!自己測吧,記得重啓Tomcat,以及Analyse Fieldname / FieldType:選text



第三:實現中英停詞器、sogou詞庫、擴展詞庫的安裝


1.將從附件中下載的中文停詞詞庫,和sogou詞庫複製到F:\winsolr\apache-tomcat-7.0.37\webapps\solr\WEB-INF\classes中

2.新建ext.dic文件,在裏面寫入: 閔行 陳華芝 這兩個詞,格式和中文停詞詞庫、sogou詞庫格式一樣。

3.將ext.dic文件用UltraEdit工具打開並另存(不改文件名),另存時將保存類型選爲:所有文件(*.*),編碼選爲:UTF-8 - 無BOM,然後將另存的這個文件複製到
 F:\winsolr\apache-tomcat-7.0.37\webapps\solr\WEB-INF\classes中

4.修改F:\winsolr\apache-tomcat-7.0.37\webapps\solr\WEB-INF\classes中的IKAnalyzer.cfg.xml文件
 在entry標籤中增加中文停詞庫 和 sogou詞庫,以及將entry key="ext_dict"標籤的註釋去掉 如下所示:

Java代碼  收藏代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  

  2. <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  

  3. <properties>  

  4.    <comment>IK Analyzer 擴展配置</comment>  

  5.    <!--用戶可以在這裏配置自己的擴展字典 -->  

  6.    <entry key="ext_dict">ext.dic;</entry>  

  7.    <!--用戶可以在這裏配置自己的擴展停止詞字典-->  

  8.    <entry key="ext_stopwords">stopword.dic;stopword_chinese.dic;words.dic;</entry>  

  9. </properties>  



現在來驗證下是否成功:
重啓Tomcat,進入到http://localhost:7080/solr地址進行測試(記得Analyse Fieldname / FieldType:選text)


測試內容爲:閔行,a陳華芝。是的

如果分出: 閔行  陳華芝 這兩個詞,說明擴展詞庫和中英停詞器配置成功!你也可以試試sogou詞庫

(建議試完之後把sogou詞庫去掉,即把words.dic從IKAnalyzer.cfg.xml文件中去除,不然會影響IK分詞的實現)


如圖:


676f5eed-6189-37a4-a4aa-f74403b50c40.jpg


第四:簡單介紹下拼音分詞器的安裝


1.將附件中的四個jar複製到F:\winsolr\solr_home\solr\collection1\contrib\analysis-extras\lucene-libs中

2.在F:\winsolr\solr_home\solr\collection1\conf下的solrconfig.xml文件中添加lib指定jar路徑:

Java代碼  收藏代碼
  1. <lib dir="F:\winsolr\solr_home\solr\collection1\contrib\analysis-extras\lucene-libs" regex=".*\.jar" />  



3.在F:\winsolr\solr_home\solr\collection1\conf下的schema.xml文件中fieldType name="text_general"這個地方的上方添加


Java代碼  收藏代碼
  1. <!--text_pinyin text_pinyin text_pinyin text_pinyin text_pinyin text_pinyintext_pinyintext_pinyintext_pinyintext_pinyin-->  

  2.    <fieldType name="text_pinyin"class="solr.TextField" positionIncrementGap="100">  

  3.        <analyzer type="index">  

  4.           <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>  

  5.           <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>  

  6.         <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />  

  7.           <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />  

  8.        </analyzer>  

  9.        <analyzer type="query">  

  10.          <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>  

  11.          <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>  

  12.          <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />  

  13.          <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />  

  14.        </analyzer>  

  15.    </fieldType>  



然後添加field

Java代碼  收藏代碼
  1. <field name ="pinyin" type ="text_pinyin" indexed ="true" stored ="false" multiValued ="false"/>  


現在來驗證下是否成功:
重啓Tomcat測試(別忘了Analyse Fieldname / FieldType:裏選擇pinyin):

測試內容:中國人

如果出現:分出的拼音詞 z  zh  zho zhon 等說明配置成功!如圖:


c1ca1753-6275-3c5e-be0c-225cf16cac57.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章