1. 程式人生 > >solr 6.2.0系列教程(二)IK中文分詞器配置及新增擴充套件詞、停止詞、同義詞

solr 6.2.0系列教程(二)IK中文分詞器配置及新增擴充套件詞、停止詞、同義詞

前言

2、solr的不同版本,對應不同版本的IK分詞器。由於IK 2012年停止更新了。所以以前的版本不適合新版的solr。 有幸在網上扒到了IK原始碼自己稍微做了調整,用來相容solr6.2.0版本。IK原始碼下載地址

步驟

1、解壓下載的src.rar壓縮包,這是我建的工程裡的src目錄下的所有東西,都是IK 的原始碼,沒別的。解壓直接複製src資料夾裡的內容到自己工程src目錄下即可。 2、開啟\solrhome\core0\conf\managed-schema配置檔案。隨意位置新增配置:  <!-- IK分詞配置 -->
         <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> 
3、在\solrhome\core0\conf\managed-schema配置檔案配置檔案中新增三個欄位名稱。 (這裡的欄位名稱就像關係資料庫中欄位名一樣,將來搜尋資料按照欄位名搜尋,向每個欄位新增資料在接下來的教程中介紹) 新增配置:    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="title" type="text_ik" indexed="true" stored="true" />
   <field name="test" type="text_general" indexed="true" stored="true"/>
其中title 欄位的type屬性為 text_ik,即我們剛新增的IK分詞器。 test欄位的type屬性為text_general,即solr自帶的分子器。 4.啟動工程,首先簡單介紹一下solr管理介面的使用。 

啟動工程-->選擇已建立的core0-->選擇圖中位置1的Analysis欄。 在圖中位置2的輸入框中輸入一句話-->圖中位置4的下拉框選擇\solrhome\core0\conf\managed-schema配置檔案中配的title欄位名--->點選位置5Analyse Valu 顯示的分詞結果便是這句話經過IK分詞器分詞後存入solr的結果。 同樣,輸入一句話選擇test欄位進行分析 便是這句話經過solr自帶的分詞器分詞後存入solr的結果。 當我們在位置3輸入一句話然後選擇相應的欄位名,再點Analyse Valu後,顯示的分詞結果是:外部介面呼叫solr查詢功能傳過來的搜尋關鍵詞的分詞情況。 比如:外部呼叫solr查詢介面,搜尋title欄位下與關鍵詞”中文分詞配置問題“相關的內容。 下面看一下各種情況的分詞結果。

------------------------------------------分割線------------------------------------------
------------------------------------------分割線------------------------------------------

------------------------------------------分割線------------------------------------------

或許你會發現,用IK分詞器分詞後的結果中為什麼”的“字消失了。 IK分詞器還有一些叫做擴充套件詞,停止詞的配置。"的"字是IK分詞器的預設停止詞,停止詞就是沒有意義的詞,這類詞不參與搜尋。 5、配置IK分詞器的擴充套件詞、停止詞。 將下載的資料夾中的IKAnalyzer.cfg.xml、stopword.dic、ext.dic三個檔案複製到專案工程src目錄下。 6、設定擴充套件詞:在ext.dic檔案中新增一個詞,比如:”中文分詞“(注意儲存的格式為UTF-8 無BOM格式)。擴充套件詞就是告訴IK分詞器,配置的擴充套件詞看作一個單元,不做切分。

7、重啟solr工程 這裡“中文分詞”四個字作為一個完整的詞沒被切分,存入搜尋引擎了。為什麼後邊還會出現被切分了的“中文”和“分詞”呢。 其實IK分詞器有兩種模式,一種為smart模式,一種為非smart模式。例如:張三說的確實在理 smart模式下的分詞結果:張三|說的|確實|在理 非smart模式下的分詞結果:張三|三|說的|的確|的|確實|實在|在理 可見非smart模式所做的就是將能夠分出來的詞全部輸出;smart模式下的IK分詞器會根據內在的方法輸出一個認為最合理的分詞結果。 8、配置停止詞:在stopword.dic檔案中新增一個詞"問題"(注意儲存的格式為UTF-8 無BOM格式)。重啟tomcat
可見配置生效,停止詞就是告訴IK不去理會的詞。