什么是分词器?

英文名叫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 进行分析,分词。

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤