4 ElasticSearch 中文分词器 (Elastic 技术栈)

2022-01-14 10:12:51 浏览数 (3)

什么是分词器? 英文名叫Analyzer:将一段文本,按照一定逻辑,分析成多个词语的一种工具。 如:床前明月光 –> 床、月、明月、月光、光。

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

这样我们古诗就变成 床、前、明、月、光了。加入我们搜索“月光”,就很尴尬只能通过合并集来得到”月光”这个词汇。下图就是相关的分词结果:

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

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

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

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

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

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

好处:

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

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

代码语言:javascript复制
ln -s 文件位置 快捷方式的放位置/名字(可省略)

例如 不加名字

代码语言:javascript复制
ln -s /home/elasticsearch-7.10.2 /zhuomian/

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

例如 加名字

代码语言:javascript复制
ln -s /home/elasticsearch-7.10.2 /zhuomian/es

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

回到正文!!!

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

代码语言:javascript复制
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的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!

0 人点赞