在Elasticsearch的对于中文的检索,ik效果最好也是使用最火的一款中文分词插件。支持自定义词库和动态修改词库。对于一般情况的的中文检索,ik分词是一个很好的选择。
安装
版本号要跟Elasticsearch版本对应。
手动安装:
1.在plugins文件夹中创建ik文件夹
mkdir ik
2.下载安装包:https://github.com/medcl/elasticsearch-analysis-ik/releases
3.解压到ik文件夹中(所有节点)
4.重启Elastic-search
自动安装:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip
注意:命令中附带版本号。
配置
ik分词配置文件: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">finance.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
热更新字典:
words_location就是指一个url,满足以下两点即可完成分词热更新。
1. 该 http 请求需要返回两个头部(header),一个是 Last-Modified,一个是 ETag,这两者都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。
2. 该 http 请求返回的内容格式是一行一个分词,换行符用 \n 即可。
注意:
1. 请确保你的扩展词典的文本格式为 UTF8 编码,每个词以换行符相隔。
2. ik-5.0.0版本开始使用ik_smart 和 ik_max_word两种分词方式。
ik_max_word表示最细粒度拆分。优点是查询效果比较好。缺点是会产生很多碎片,对于大文本字段不建议使用ik_max_word。
ik_smart表示最粗粒度拆分,优点是降低了索引存储。缺点是查询效果不好。
两种分词方式举例:
ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合。
ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。这个时候输入“中华”是匹配不到的。
使用示例:
"content": {
"type": "text",
"analyzer": "ik_max_word", ##索引分词
"search_analyzer": "ik_max_word"。 ##查询分词
},
——————————————————————————————————
作者:桃花惜春风
转载请标明出处,原文地址:
https://blog.csdn.net/xiaoyu_BD/article/details/81778787
如果感觉本文对您有帮助,请留下您的赞,您的支持是我坚持写作最大的动力,谢谢!