分詞器 什麼是IK分詞器? 分詞:即把一段中文或者別的劃分成一個個的關鍵字,我們在搜索時會把自己的信息進行分詞,會把資料庫中或者索引庫中的數據進行分詞,然後進行一個匹配操作,Elasticsearch的標準分詞器,會將中文分為一個一個的字,而不是詞,比如:“石原美里”會被分為“石”、“原”、“美”、 ...
分詞器
什麼是IK分詞器?
分詞:即把一段中文或者別的劃分成一個個的關鍵字,我們在搜索時會把自己的信息進行分詞,會把資料庫中或者索引庫中的數據進行分詞,然後進行一個匹配操作,Elasticsearch的標準分詞器,會將中文分為一個一個的字,而不是詞,比如:“石原美里”會被分為“石”、“原”、“美”、“里”,這顯然是不符合要求的,所以我們需要安裝中文分詞器IK來解決這個問題。
IK提供了兩個分詞演算法:ik_smart和ik_max_word,其中ik_smart為最少切分,ik_max_word為最細力度劃分。
安裝IK分詞器
中文分詞插件IK
的網址是 https://github.com/medcl/elasticsearch-analysis-ik
我們可以通過find / -name elasticsearch-plugin
命令搜索elasticsearch-plugin在什麼地方
安裝IK時要註意將github上示例的版本改成自己的elasticsearch版本,我安裝的是7.6.2,所以改成如下:
/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
安裝後重啟Elasticsearch服務
我們可以通過如下命令查看安裝的Elasticsearch插件
/usr/share/elasticsearch/bin/elasticsearch-plugin list
使用IK分詞器
首先我們通過最ik_smart小切分來測試
接著,我們通過ik_max_word最細力度切分來測試
但是有些我們自己造的詞,分詞器是無法識別的(比如:白兮會被識別為兩個詞:白和兮),這就需要我們自己加到分詞器的字典中。
通過RPM方式安裝的IK擴展配置文件地址如下
vim /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml
現在我們在/etc/elasticsearch/analysis-ik
目錄下創建一個自己的詞典,例如:my.dic,併在其中添加"白兮"然後保存
這裡要記得將my.dic文件所屬的用戶和組分別改為root和elasticsearch,防止elasticsearch用戶是無法讀取該文件的內容的,我們可以看到預設的其它詞典都是預設屬於root用戶和elasticsearch組的,我們把自定義的詞典也改成這樣
然後將我們新建的my.dic文件增加到IKAnalyzer.cfg.xml配置文件中
添加後重啟Elasticsearch,然後通過kibana再重新測試,可以發現,白兮已經被識別為一個詞了。
如果該文章對您有幫助,請點擊推薦,感謝。