当前位置: 首页 > article >正文

ElasticSearch7.x入门教程之中文分词器 IK(二)

文章目录

  • 前言
  • 一、内置分词器
  • 二、中文IK分词器(第三方)
  • 三、本地自定义
  • 四、远程词库
  • 总结


前言

ElasticSearch 核心功能就是数据检索,首先通过索引将文档写入 es。
查询分析则主要分为两个步骤:

  • 1、词条化:分词器将输入的文本转为一个一个的词条流。
  • 2、过滤:比如停用词过滤器会从词条中去除不相干的词条(的,嗯,啊,呢);另外还有同义词过滤器、小写过滤器等。

我们可使用内置分词器、第三方、或自定义分词器。


一、内置分词器

内置分词器说明:

分词器标识作用
Standard Analyzerstandard标准分词器,适用于英语等
Simple Analyzersimple简单分析器,基于非字母字符进行分词,单词会被转换为小写字母
Whitespace Analyzerwhitespace空格分词器,按照空格进行切分
Stop Analyzerstop类似于简单分词器,但是增加了停用词的功能
KeyWord Analyzerkeyword关键分词器,输入文本等于输出文本
Pattern Analyzerpattern利用正则表达式对文本切分,支持停用词
Language Analyzer多种西语系arabic, brazilian, catalan, english等一组旨在分析特定语言文本的分析切分
Fingerprint Analyzer-指纹分析仪分词器,通过创建标记进行重复检测

二、中文IK分词器(第三方)

在 Es 中,使用较多的中文分词器是 elasticsearch-analysis-ik,这个是 es 的一个第三方插件,代码托管在 GitHub 上:https://github.com/medcl/elasticsearch-analysis-ik

两种使用方式:

  • 1、直接运行ES提供的命令:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip
  • 2、下载安装

首先打开分词器官网:https://github.com/medcl/elasticsearch-analysis-ik。

然后在 https://github.com/medcl/elasticsearch-analysis-ik/releases 页面找到最新的正式版,下载下来。我们这里的下载链接是:
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip

然后将下载文件解压。

然后在 es/plugins 目录下,新建 ik 目录,并将解压后的所有文件拷贝到 ik 目录下。

最后重启es即可。

IK分词器有两种:

分词器标识描述分词对象结果
ik_smartik_smartik分词器中的简单分词器,支持自定义字典,远程字典今天星期一[今天,星期一]
ik_max_wordik_max_wordik_分词器的全量分词器,支持自定义字典,远程字典学如逆水行舟[今天,星期一,星期,一 ]

三、本地自定义

在 es/plugins/ik/config 目录下,新建 ext.dic 文件(文件名任意),在该文件中可以配置自定义的词库。
在这里插入图片描述
添加自定义的词:
在这里插入图片描述
然后配置扩展词典的位置:
vim IKAnalyzer.cfg.xml
在这里插入图片描述
最后重启ES即可。

四、远程词库

也可以配置远程词库,远程词库支持热更新(不用重启 es 就可以生效)。

热更新只需要提供一个接口,接口返回扩展词即可。

具体使用方式如下,新建一个 Spring Boot 项目,引入 Web 依赖即可。然后在 resources/stastic 目录下新建 ext.dic 文件,写入扩展词:
在这里插入图片描述
接下来,在 es/plugins/ik/config/IKAnalyzer.cfg.xml 文件中配置远程扩展词接口:
在这里插入图片描述
配置完成后,重启 es ,即可生效。

热更新,主要是响应头的 Last-Modified 或者 ETag 字段发生变化,ik 就会自动重新加载远程扩展。


总结

以上就是ES涉及到的分词器支持情况,更多详情可以查看官网。


http://www.kler.cn/a/405966.html

相关文章:

  • Kubernetes的pod控制器
  • autoware(2)运行自己的数据集
  • ElasticSearch学习篇18_《检索技术核心20讲》LevelDB设计思想
  • 如何在Linux上安装Canal同步工具
  • 半导体工艺与制造篇5 光刻
  • pdf文档动态插入文字水印,45度角,旋转倾斜,位于文档中央,多行水印可插入中文
  • Python操作neo4j库py2neo使用之创建和查询(二)
  • ubuntu pytorch容器内安装gpu版本的ffmpeg
  • android studio无法下载,Could not GET xxx, Received status code 400
  • C++设计模式介绍
  • Bug:引入Feign后触发了2次、4次ContextRefreshedEvent
  • IDEA 下载源码很慢,Download Source使用阿里云镜像仓库
  • 算法编程题-排序
  • 什么是Web3D?有何优势?有哪些应用场景?
  • javascrip页面交互
  • 基于 MONAI 的 3D 图像分割任务1(数据增强可视化)
  • STL容器之priority_queue的常用功能和操作
  • 初识Linux · 信号处理 · 续
  • 区块链安全常见的攻击——不安全的 Delegatecall 漏洞(Unsafe Delegatecall Vulnerability)【3】
  • 类和对象( 中 【补充】)
  • 关于xftp7 的中文乱码问题
  • C语言执行Lua进行错误处理
  • FPGA 14 ,硬件开发板分类详解,FPGA开发板与普通开发板烧录的区别
  • 优化 Spring Boot 性能
  • ubuntu22.04 android studio老卡
  • 滚珠导轨在极端温度下性能如何?