Elasticsearch IK分詞器

SpringBreeze發表於2021-08-18

Elasticsearch-IK分詞器

一、簡介

因為Elasticsearch中預設的標準分詞器(analyze)對中文分詞不是很友好,會將中文詞語拆分成一個一箇中文的漢字,所以引入中文分詞器-IK。

使用預設

響應結果

二、安裝IK分詞器

1.先下載ik分詞器

https://github.com/medcl/elasticsearch-analysis-ik/releases

注意 一定要下載和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

效果

我們輸入喬碧羅殿下正常的情況下,是不會識別整個詞語的,返回的都是分開的。當我們在詞庫檔案中寫上喬碧羅殿下就會返回下面的效果

相關文章