ElasticSearch笔记-IK中文分析器
中文分析器
IK(推荐)、jieba、THULAC
英文我们可以按照空格将一句话、一篇文章进行分词,然后对分词进行过滤,最后留下有意义的词。中文的一句话是没有空格的,这就要有一个强大的中文词库,当你的内容中出现这个词时,就会将这个词提炼出来。
查看分词器的分词结果(ik分词器有两种ik_smart、ik_max_word):
GET /_analyze
{
"analyzer": "ik_max_word",
"text": ["我是中国人你是美国人content内容123 "]
}
IK中文分析器的安装
ES默认是没有IK中文分词器的,我们要将IK中文分词器作为一个插件安装到ES中,安装的步骤也很简单:
-
从GitHub上下载适合自己ES版本的IK中文分词器,地址如下:https://github.com/medcl/elasticsearch-analysis-ik/releases。
-
切换到ES的插件目录中(${ES_HOME}/plugins)
cd plugins -
创建ik目录
mkdir ik -
下载IK分析器
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip -
解压。
unzip elasticsearch-analysis-ik-7.6.2.zip -
重启ES容器。
步骤如下:
wget
IK中文分析器初探
IK中文分词器插件给我们提供了两个分析器
- ik_max_word: 会将文本做最细粒度的拆分
- ik_smart:会做最粗粒度的拆分
IK词库热更新
打开配置文件/plugins/ik/config/IKAnalyzer.cfg.xml
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
通过remote_ext_dict配置扩展词URL;通过remote_ext_stopwords配置停止词URL
http请求需要返回两个header,Last-Modified和ETag,都是字符串类型,只要其中一个发生变化,该插件就会抓取新的分词,进而更新词库。
返回的内容格式是一行一个分词,换行符用\n
即可。
满足上面两点要求就可以实现热更新分词,不需要重启ES实例