Elasticsearch-IK分詞器
一、簡介
因為Elasticsearch中預設的標準分詞器(analyze)對中文分詞不是很友好,會將中文詞語拆分成一個一箇中文的漢字,所以引入中文分詞器-IK。
使用預設
二、安裝IK分詞器
1.先下載ik分詞器
注意 一定要下載和Elastic版本相同的IK分詞器
2.我們將ik分詞器上傳到我們的es的plugins/ik目錄下,ik資料夾需要我們自己建立
cd /usr/local/elasticsearch/plugins/ik/
unzip elasticsearch-analysis-ik-XX.zip
# windos下安裝也是一樣的操作
3.重啟
重啟的時候在日誌中就可以看到關於IK分詞器已經被載入進去了
三、測試分詞器
1.ik_smart
會做最粗粒度的拆分,比如會將“我是中國人”拆分為我、是、中國人。
POST _analyze
{
"analyzer": "ik_smart",
"text": "我是中國人"
}
2.ik_max_word
會將文字做最細粒度的拆分,比如會將“我是中國人”拆分為“我、是、中華、中國人、中國、國人
POST _analyze
{
"analyzer": "ik_max_word",
"text": "我是中國人"
}
四、自定義詞庫
使用場景
在利用ik分詞的過程中,當ik的分詞規則不滿足我們的需求了,這個時候就可以利用ik的自定義詞庫進行匹配,比如最火的常用的網路用語;我們輸入喬碧羅殿下正常的情況下,是不會識別整個詞語的,返回的都是分開的。我們識別整個詞語就需要自定義詞庫
1、自定義詞庫方式一(新建dic檔案)
(1)到elasticsearch/plugins中尋找ik外掛所在的目錄
(2)在ik中的config檔案中新增詞庫
建立目錄 mkdir ciku
建立檔案 vim test.dic
#編輯test.dic 注意每個詞語一行
(3)修改ik配置
vim /**/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml
(4)重啟ElasticSearch
2、通過Nginx配置自定義詞庫
(1)安裝好nginx,到nginx的html目錄下建立分詞檔案
vim fenci.txt
#每個詞語一行
(2)修改ik配置
vim /**/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml
(3)重啟ElasticSearch
效果
我們輸入喬碧羅殿下正常的情況下,是不會識別整個詞語的,返回的都是分開的。當我們在詞庫檔案中寫上喬碧羅殿下就會返回下面的效果