Elasticsearch 7.x - IK分詞器插件(ik_smart,ik_max_word)

1、安裝IK分詞器

Elasticsearch也須要安裝IK分析器以實現對中文更好的分詞支持。git

去Github下載最新版elasticsearch-ikgithub

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

 

 

將ik文件夾放在elasticsearch/plugins目錄下,重啓elasticsearch。post

Console控制檯輸出:測試

[2019-09-04T08:50:23,395][INFO ][o.e.p.PluginsService ] [THINKPAD-T460P] loaded plugin [analysis-ik]spa

2、測試分詞效果

IK分詞器有兩種分詞模式:ik_max_word和ik_smart模式。3d

一、ik_max_wordcode

會將文本作最細粒度的拆分,好比會將「中華人民共和國人民大會堂」拆分爲「中華人民共和國、中華人民、中華、華人、人民共和國、人民、共和國、大會堂、大會、會堂等詞語。xml

二、ik_smartblog

會作最粗粒度的拆分,好比會將「中華人民共和國人民大會堂」拆分爲中華人民共和國、人民大會堂。

測試兩種分詞模式的效果。分詞查詢要用GET、POST請求,須要把請求參數寫在body中,且須要JSON格式。

發送:post localhost:9200/_analyze

(1)測試ik_max_word

POST _analyze

{

"analyzer": "ik_max_word",

"text":"中華人民共和國人民大會堂"

}

 

 

 

 (2)測試ik_smart

POST _analyze

{

"analyzer":"ik_smart",

"text": "中華人民共和國人民大會堂"

}

 

 

網上關於兩種分詞器使用的最佳實踐是:索引時用ik_max_word,在搜索時用ik_smart。

即:索引時最大化的將文章內容分詞,搜索時更精確的搜索到想要的結果。

不過,須要注意的是:ik_smart 分詞結果並非 ik_max_word的子集。這樣,在使用ik_max_word 建索引,用ik_smart 搜索時,有可能結果匹配不上,因此這是兩種不一樣類型的分詞結果,建議仍是不要混用。

下面測試【5號電池】,在兩種分詞模式下的輸出結果。

 

 

 

 

3、擴展詞典

在elasticsearch/plugins/ik/config下新建my.dic文件,在my.dic中寫入想要分詞識別的文字;修改IKAnalyzer.cfg.xml文件,在<entry key="ext_dict">中指定my.dic。

<properties>

<comment>IK Analyzer 擴展配置</comment>

<!--用戶能夠在這裏配置本身的擴展字典 -->

<entry key="ext_dict">my.dic</entry>

<!--用戶能夠在這裏配置本身的擴展中止詞字典-->

<entry key="ext_stopwords"></entry>

<!--用戶能夠在這裏配置遠程擴展字典 -->

<!-- <entry key="remote_ext_dict">words_location</entry> -->

<!--用戶能夠在這裏配置遠程擴展中止詞字典-->

<!-- <entry key="remote_ext_stopwords">words_location</entry> -->

</properties>

 

重啓elasticsearch便可看到分詞效果。

相關文章
相關標籤/搜索