ES在創(chuàng)建倒排索引時需要對文檔分詞侥涵;在搜索時卖陵,需要對用戶輸入內(nèi)容分詞裂问。但默認的分詞規(guī)則對中文處理并不友好侧啼。處理中文分詞,一般會使用IK分詞器堪簿。
ik分詞器安裝
- 點擊下載
- 進入
elasticsearch-7.15.0\plugins
目錄痊乾,新建ik
文件夾,把下載文件解壓進去 - 重啟ES
重啟時遇到ik和ES版本不一致的錯誤:
Plugin [analysis-ik] was built for Elasticsearch version 7.14.2 but version 7.15.0 is running
修改ik分詞器的默認ES版本
打開elasticsearch-7.15.0\plugins\ik\plugin-descriptor.properties
文件
修改成es對應(yīng)的版本
elasticsearch.version=7.15.0
ik分詞器包含兩種模式
- ik_smart:最少切分椭更,粗粒度
- ik_max_word:最細切分哪审,細粒度
POST /_analyze
{
"analyzer": "ik_smart",
"text": "我是中國人"
}
使用ik_samrt
分詞,中國人
劃分為一個分詞
{
"tokens" : [
{
"token" : "我",
"start_offset" : 0,
"end_offset" : 1,
"type" : "CN_CHAR",
"position" : 0
},
{
"token" : "是",
"start_offset" : 1,
"end_offset" : 2,
"type" : "CN_CHAR",
"position" : 1
},
{
"token" : "中國人",
"start_offset" : 2,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 2
}
]
}
ik分詞拓展
要拓展ik分詞器的詞庫虑瀑,只需要修改一個ik分詞器目錄中的config目錄中的IkAnalyzer.cfg.xml文件:
<comment>IK Analyzer 擴展配置</comment>
<!--用戶可以在這里配置自己的擴展字典 -->
<entry key="ext_dict">ext.dic</entry>
<!--用戶可以在這里配置自己的擴展停止詞字典-->
<entry key="ext_stopwords">stopword.dic</entry>
在elasticsearch-7.15.0\plugins\ik\config
目錄
- 新增
ext.dic
加入分詞內(nèi)容
例如:豪弘集團 - 新增
stopword.dic
加入過濾分詞
例如:視察 - 重啟ES
請求
POST _analyze
{
"analyzer": "ik_smart",
"text": "視察豪弘集團"
}
加入分詞后的響應(yīng)
{
"tokens" : [
{
"token" : "豪弘集團",
"start_offset" : 5,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 3
}
]
}
當我們添加了擴展分詞湿滓,豪弘集團,變成了一個分詞缴川;視察沒了