上一篇:ElasticSearch(7)—倒排索引
1. 什麼是IK分詞器?
我們在使用百度搜索引擎的時候,經常會發現有一些標紅的關鍵詞,這些被標記的關鍵詞分的還是非常精準的:
這裏對中文進行分詞使用的就是IK分詞器
技術,所謂分詞就是將一段文字劃分爲一個個的關鍵字,在搜索的時候會把搜索的文字進行分詞,對文檔中的數據也進行分詞,然後會將分詞後的關鍵字進行匹配,默認的中文分詞是將每個字作爲一個詞,比如好好學習
使用中文分詞器拆分之後就是好
、好
、學
、習
。這種分詞器顯然不夠優秀,而IK分詞器提供了兩種分詞算法:ik_smart
和ik_max_word
。
要使用IK分詞器
,首先需要下載GitHub所有版本下載地址,將下載好得ik分詞器放到elasticsearch
的plugins
目錄下:
注意:IK分詞器與elasticsearch存在兼容問題,所以下載的ik分詞器需要與當前的elasticsearch版本一致
Ik分詞器7.6.2版本下載
提取碼:3bfr
將下載好得ik分詞器放到elasticsearch得plugin目錄下之後,啓動es,我們會看到es會自動加載ik分詞器:
打開kibana的開發工具:
測試兩種不同的分詞算法:
2. ik_smart 分詞算法
ik_smart
(最少切分)
3. ik_max_word 分詞算法
ik_smart
(最細粒度切分)
兩種分詞算法個人感覺ik_smart
相當於就是一個最粗粒度劃分,而ik_max_word
是最細粒度劃分
4. 如何自定義詞庫
ik分詞器可以支持自定義詞庫,比如我們想讓分詞器識別“明我”,就需要自定義一個詞庫:
- 在ik分詞器的config下面新建一個
my.dic
文件,文件中編輯輸入明我
- 修改
IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<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進行測試:
未自定義詞庫前的分詞:
使用自定義詞庫之後的分詞:
可以看到分詞器將明我
識別爲一個詞。說明使用自定義詞庫成功。