分詞器
什么是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再重新測試,可以發現,白兮已經被識別為一個詞了。
如果該文章對您有幫助,請您點個推薦,感謝。