1. 程式人生 > >solr7.2.1整合ansj分詞器

solr7.2.1整合ansj分詞器

       最近剛離職,為了儘快找到好的工作,不敢不好好學習,查漏補缺。之前的工作滿打滿算做了11個月,主要內容是搜尋業務介面的開發,主要使用的是solr引擎,工作期間由於忙於業務並沒有對solr的基礎進行過仔細的學習,這兩天先從solr最基本的知識點開始梳理。

       關於分詞器,工作中用的是ik分詞器,起初也對各種分詞器進行過調研和比較,最後覺得ansj還是比其他分詞器要好些,所以想把ansj整合到solr中去,最終沒機會去做,這兩天也算是有時間做了。以下是我的操作過程和一些感受。

      在進行ansj整合之前,要先搭建好solr的開發環境,具體的可以參考如下文章:

      https://www.cnblogs.com/mengjinluohua/p/8439546.html     

      這篇博文是做ik分詞整合的,solr環境搭建描述的比較詳細,如果剛入門,必須先看上面這篇。

      首先,下載相應的jar包,或者相應的原始碼打包成jar包,主要有三個:ansj_seg-5.1.6,nlp-lang-1.7.7以及ansj_lucene5_plug-5.1.2.0。這三個jar除了第三個ansj_lucene5_plug-5.1.2.0,前兩個都是目前maven中最新的版本,solr的版本是7.2.1。所有要用的都在這裡了。jar包在maven上都能下載。或者可以先下載ansj原始碼,自己打包:

https://github.com/NLPchina/ansj_seg

       然後把這三個jar包放到tomcat中的solr資料夾的指定位置(WEB-INF/lib目錄下):

 

點選下載可以得到這樣一個壓縮檔案:ansj_seg-master.zip

解壓後可以看到,這是一個maven工程,

上圖中用紅色矩形圈起來的是將要放到tomcat中solr資料夾下指定位置的檔案:

上圖就是這兩檔案放置的位置和檔案(注意路徑)。

       最後,在solr_home中找到manage-schema,在裡面加上一段配置資訊:

   <!--ansj start -->
    <fieldType name="text_ansj" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
             <tokenizer class="org.ansj.lucene.util.AnsjTokenizerFactory"  isQuery="false"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="org.ansj.lucene.util.AnsjTokenizerFactory"/>
        </analyzer>
   </fieldType>
   <!--ansj end -->

注意上面標紅的內容,這個是AnsjTokenizerFactory的全類名,這個類是在ansj_lucene5_plug-5.1.2.0的jar包中的,ansj_lucene5_plug-5.1.2.0可以在ansj_seg-master.zip中找到,然後用maven編譯一下,就可以得到這個jar包了。

最後,啟動tomcat,如果能進入到solr管理頁面,在analysis中能看到text_ansj說明配置成功了。

到此我的內容就結束了,內容不多,但是為了完成搭建卻花費了我一天半的時間,主要是之前不瞭解solr載入分詞器的邏輯,今天上午又看了一遍solr的分詞知識《solr權威指南》上下卷是不錯的入門和工作參考。

下面這個是本文的主要參考資料:

http://www.cnblogs.com/likehua/p/4481219.html

由於這篇部落格提到的版本已經找不到了,所以無法完全按照他的方法來做。嘗試了很多版本都沒成功。在我把基本知識點看過一遍之後,打算自己打包一個AnsjTokenizerFactory的,結果發現有現成的。。。總之非常感謝這兩位博主的分享。

差點忘了,如果遇到下面這個問題,找他:https://blog.csdn.net/shiqidide/article/details/7722578