4 ElasticSearch 中文分词器

什么是分词器?

英文名叫Analyzer:将一段文本,按照一定逻辑,分析成多个词语的一种工具。

如:床前明月光 –> 床、月、明月、月光、光。

ES内置了分词器,但是对中文进行分词,很不友好,处理的方式:一个字一个词

这样我们古诗就变成 床、前、明、月、光了。加入我们搜索月光,就很尴尬。

左边 看到token 就是一个字,一个字的。

所以,我们就需要使用我们 IK分词器

IK 分词器:IKAnalyzer是一个开源的,轻量级的基于Java语言开发的中文分词工具包

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

记得 下载相同版本的ES 才可以使用。

他娘的,这里注意一下。发布的源码,经过编译,不一定是你下载的版本。太他妈坑了。所以,咱们不编译,直接拿过来用。

好处:

  • 每秒60万字的处理能力
  • 支持自定义拓展用户词典

设置 软连接 (相当于 Windows环境下的 快捷方式)Ln 不是 In

ln -s 文件位置 快捷方式的放位置/名字(可省略)

例如 不加名字

ln -s /home/elasticsearch-7.10.2 /zhuomian/

将来在/zhuomian下 输入 cd/elasticsearch-7.10.2 就可以自动进入

例如 加名字

ln -s /home/elasticsearch-7.10.2 /zhuomian/es

将来在/zhuomian下 输入 cd/es 就可以自动进入

回到正文!!!

在elasticsearch-7.10.2/plugins 下 并创建一个文件夹ik

mkdir ik

将github下载下来的现成的插件 复制进去

搞好了。直接 lsof -i:9200 然后 杀死ES 在开启ES。

安装完成。

使用

原来使用 standard 是 单个单词(汉字)进行分词。

现在引入 中文分词插件了。就多了2种模式 进行 分析、分词

  • ik_smart :粗粒度 (分的相对不那么细,但因为分词少,效率高)
  • ik_max_word:细粒度 (分的更细,但会造成分词次数加多)
Analyzer是分词器 Token是分析器 两个组合成2个模式

使用 ik_smart 粗粒度

使用 ik_max_word 细粒度 分词结果。

完了。

使用分词器

查询方式有2种

  • term
  • match

强调:在创建映射的时候,关于Text字段 一定要指定我们的中文分词器,不然就是使用默认standard 进行分析,分词。

还是那句话,你只看到了大佬轻松解决问题的光鲜,却不记得当初人家死磕Bug的痛苦。

万物皆入轮回,谁也躲不掉!

以上文章,均是我实际体验,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,支持下原创,请勿直接盗用,有条件的可以开通个会员支持下,谢谢!!!

Java Code Study » 4 ElasticSearch 中文分词器

招聘、单纯问问题,都可以联系我

加我QQ 公司缺人,拉我入伙