Elasticsearch 分析器(内置分析器,自定义分析器,IK分析器)

Elasticsearch 分析器(内置分析器,自定义分析器,IK分析器)

  • 内置分析器
  • 使用分析器
  • 自定义分析器
  • 中文分析器(IK分析器)
    • 安装
    • 使用
      • 添加词典

内置分析器

官网:https://www.elastic.co/guide/en/elasticsearch/reference/7.10/analysis-analyzers.html

ES 内置了一些分析器。

在这里插入图片描述

默认情况下,一个索引的字段类型为text是,该字段在建立索引时和查询时的分析器时standard。

standard分析器由standard分词器,lowercase分词过滤器和stop分词过滤器(默认禁用)构成。

standard分析器对于中文只能按字拆分。

# 默认的标准分析器
POST _analyze
{"analyzer": "standard","text": "<h>This is a word"
}

在这里插入图片描述

# 自己组合的分析器,
# 字符过滤器过滤 html标签
# 分词器,根据空白符进行分词
# 分词过滤器,字母小写 并 过滤掉停用词
POST _analyze
{"char_filter": ["html_strip"], "tokenizer": "whitespace","filter": ["lowercase","stop"], "text": "<h>This is a word"
}

在这里插入图片描述
解释上述结果

原文: <h>This is a word
经过html字符过滤器 This is a word
经过空白符分词器 [This, is, a, word]
经过小写分词器 [this, is , a, word]
经过停用词分词器 [word]
所以最终结果 只有 word 一个单词

使用分析器

PUT /my-index-000001
{//指定默认分析器为whitespace"settings": {"analysis": {"analyzer": {"default":{"type":"whitespace"}}}},"mappings": {"properties": {// 没有指定分析器,搜索和索引都使用默认分析器whitespace"title1":{"type": "text"},// 仅指定索引分析器standard,搜索和索引都使用分析器standard"title2":{"type": "text","analyzer": "standard"},// 分别指定索引分析器和搜索分析器,索引分析器为standard,搜索分析器为standard"title3":{"type": "text","analyzer": "standard","search_analyzer": "standard"}}}
}

注意: 上述 title3 指定的搜索分析器和索引时的分析器是一致的,但是在大多数情况下是没有必要指定的,因为在默认情况下二者就是一致的。

如果指定的搜索分析器和索引时的分析器不一致,则ES在搜索时可能出现有不符合预期的匹配情况,因此该设置在使用时需要慎重选择。

自定义分析器

ES 也支持用户自定义分析器

当自带的分析器不满足需求时,需要用户自己定义分析器

PUT my-index-000002
{"settings": {"analysis": {"analyzer": {"my_custom_analyzer": { //指定 自定义类型分析器"type": "custom",//指定 自定义的字符过滤器"char_filter": ["my_filter"],// 指定 自定义的分词器"tokenizer": "my_tokenizer",// 指定 自定义的 分词过滤器"filter": ["lowercase","my_filter"]}},//自定义的分词器"tokenizer": {// 分词器:按照正则进行切分词"my_tokenizer": { "type": "pattern","pattern": "[ .,!?]"}},// 自定义的 字符过滤器"char_filter": {// 字符过滤器:将:) 转化为 _happy_,将:( 转化为 _sad_"my_filter": { "type": "mapping","mappings": [":) => _happy_",":( => _sad_"]}},// 自定义的 分词过滤器"filter": {// 分词过滤器,过滤英文的停用词"my_filter": { "type": "stop","stopwords": "_english_"}}}}
}POST my-index-000002/_analyze
{"analyzer": "my_custom_analyzer","text": "I'm a :) person, and you?"
}

在这里插入图片描述
解释上述结果:

原文: I’m a : ) person, and you?
经过my_filter字符过滤器 I’m a happy person, and you?
经过my_tokenizer分词器 [I’m, a, happy, person, and, you]
经过小写分词器 [i’m, a, happy, person, and, you]
经过停用词分词器 删除 停用词(a, and) [i’m, happy, person, you]
所以最终结果 [i’m, happy, person, you]

中文分析器(IK分析器)

前面提到过,ES内置的分词器都不支持中文的分词。所以我们需要自己安装中文分析器插件。
IK分析器时比较常用的中文分析器。其原理是基于词典的分词算法。

安装

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

下载与ES版本一致的IK插件包,这里以7.10.2 为例

# 进入es的插件目录
cd es/plugins
# 创建ik目录
mkdir ik
# 在ik 目录下解压 ik分析器
unzip elasticsearch-analysis-ik-7.10.2.zip
# 进入es/bin目录,重启es
./elasticsearch -d

使用

IK分词器内置了两个子分析器,即ik_smart 和 ik_max_word (分词器与其同名)

ik_smart:切分粒度比较粗
例如: “假日酒店”=> “假日酒店”

POST _analyze
{"analyzer": "ik_smart","text": "假日酒店"
}

在这里插入图片描述

ik_max_word: 切分粒度比较细,穷举了所有可能的组合
例如: “假日酒店”=> “假日酒店”,“假日”,“酒店”

POST _analyze
{"analyzer": "ik_max_word","text": "假日酒店"
}

在这里插入图片描述

添加词典

对于IK分词器不认识的词,其不能合理切分,所以有时需要我们手动添加一些词典。
例如:一些网络热词,ik分词器并不能很好的切分

POST _analyze
{"analyzer": "ik_smart","text": "及你太美"
}

在这里插入图片描述
上面的分词结果,显然不是我想要的。为了得到正确的分词结果。需要添加自定义词典

IK分词器提供了两种自定义词典方式

  • 本地
  • 远程

进入ik 分析器 config 目录
编辑 IKAnalyzer.cfg.xml 可以实现自定义词典

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">custom-dict.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords">custom-stop.dic</entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

在 custom-dict.dic 文件中 写入 所需的热词,

在这里插入图片描述

重启ES,重新分析,可以看到热词按照自定义设置进行切分了

POST _analyze
{"analyzer": "ik_smart","text": "及你太美"
}

在这里插入图片描述
如果还需要其他的热词更新方式,如Mysql,Redis 等,可以下载Ik分析器的源码自行开发

注意: 默认情况下,IK分词器不会热更新词库,也就是说,每次更新自定义词库,都需要重启ES。同样的,想要热更新,可以下载源码自行开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/332159.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03_前端三大件CSS

文章目录 CSS用于页面元素美化1.CSS引入1.1style方式1.2写入head中&#xff0c;通过写style然后进行标签选择器加载样式1.3外部样式表 2.CSS样式选择器2.1 元素选择器2.2 id选择器2.3 class选择器 3.CSS布局相关3.1 CSS浮动背景&#xff1a;先设计一些盒子因此&#xff0c;引出…

【qt】QTreeWidget 树形组件

QTreeWidget 树形组件 一.什么是树形组件二.界面设计树形组件三.代码实现1.清空2.设置列数3.设置头标签4.添加根目录①QTreeWidgetitem②设置文本③设置图标④添加为顶层目录 5.添加子目录①初始化为父目录②子目录添加到父目录③获取到子目录 四.插入目录1.获取当前选中目录项…

python数据类型之元组、集合和字典

目录 0.三者主要作用 1.元组 元组特点 创建元组 元组解包 可变和不可变元素元组 2.集合 集合特点 创建集合 集合元素要求 集合方法 访问与修改 子集和超集 相等性判断 集合运算 不可变集合 3.字典 字典特点 字典创建和常见操作 字典内置方法 pprin模块 0.…

Vxe UI 表单设计器、零代码平台

vxe-pc-ui Vxe UI 表单设计器、零代码表单设计器 安装 Vxe UI PC端组件库 官方文档 查看 github、gitee // ...import VxeUI from vxe-pc-uiimport vxe-pc-ui/lib/style.css// ...// ...createApp(App).use(VxeUI).mount(#app)// ...使用 vxe-form-design 设计器组件 vxe-fo…

分享活动规划

前两天去参加菁英学院的一些辅导&#xff0c;是关于苏州久富农业机械的发展&#xff0c;看了他们企业的故事&#xff0c;我觉得我们农机很有前景和发展空间&#xff0c;我希望重新经过一次分享活动来分享我的感触&#xff0c;希望能够再次把我学到的内容传输到其他班的同学们 请…

word 全文中 英文字体 和 样式的字体 莫名奇妙地 被改成 “等线”

word全文中英文字体和样式的字体莫名奇妙地被改成“等线” sm word又抽风了&#xff0c;改完论文保存后打开突然发现全文字体都不对劲&#xff0c;吓得冷汗直冒&#xff1a;虽然我用git管理了论文版本&#xff0c;但是只有比较大的修改我才上传了&#xff0c;刚刚修了几个小时…

Redis篇 redis基本命令和定时器原理

基本命令和定时器原理 一. exists命令二. del命令三. Expire命令四. ttl命令五. redis的过期策略六. 定时器的两种设计方式七. type命令 一. exists命令 用来判断key的值是否存在 返回值是key的个数 这样写的话&#xff0c;有没有什么区别呢&#xff1f; 效率变低&#xff0c;消…

猫抓(cat-catch)插件的常规用法

目录 1.1、前言1.2、抓取图片资源1.3、抓取音频资源1.4、抓取视频资源 1.1、前言 本文将介绍利用猫抓&#xff08;cat-catch&#xff09;插件如下抓取网页上的图片、音频、视频等资源&#xff0c;猫抓&#xff08;cat-catch&#xff09;插件的安装及设置请参考推荐一款媒体影音…

ionic关于@angular版本报错解决方案(有效)

最近学校要求使用ionicangular学习&#xff0c;但是出现下面问题&#xff0c;这里我就分享一个我亲测有效的解决方案&#xff0c;提供学习&#xff08;在VScode中&#xff09; npm error code ERESOLVE npm error ERESOLVE could not resolve npm error npm error While resol…

数据迁移测试经验分享

以下为作者观点&#xff1a; 数据迁移&#xff0c;是在保证新旧系统业务连续性的前提下&#xff0c;将数据从旧数据库迁移到新数据库的过程&#xff0c;测试前通过迁移策略和方案了解新旧系统数据如何重构与关联&#xff0c;测试过程需确保数据迁移的正确性&#xff0c;主要体…

vs2013使用qt Linguist以及tr不生效问题

一、qt Linguist&#xff08;语言家&#xff09;步骤流程 1、创建翻译文件,在qt选项中 2.选择对应所需的语言&#xff0c;得到.ts后缀的翻译文件 3.创建.pro文件&#xff0c;并将.ts配置在.pro文件中 3.使用qt Linguist 打开创建好的以.ts为后缀的翻译文件&#xff0c;按图所示…

吴恩达深度学习笔记:超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架(Hyperparameter tuning)3.4-3.5

目录 第二门课: 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第三周&#xff1a; 超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架&#xff08;Hyperparameter …

BUUCTF-Misc24

从娃娃抓起1 1.打开附件 是两个文本文件 2.电报码 电报码在线翻译网站&#xff1a;https://usetoolbar.com/convert/cccn.html 3.汉字五笔编码 汉字五笔编码在线网站查询&#xff1a;https://www.qqxiuzi.cn/bianma/wubi.php 4.转化为MD5值 将文字保存到文本文档 用winR输入…

HarmonyOS应用开发者高级认证考试满分答案(100分)【全网最全-不断更新】

系列文章&#xff1a; HarmonyOS应用开发者基础认证满分答案&#xff08;100分&#xff09; HarmonyOS应用开发者基础认证【闯关习题 满分答案】 HarmonyOS应用开发者高级认证满分答案&#xff08;100分&#xff09; HarmonyOS云开发基础认证满分答案&#xff08;100分&#xf…

【三维修复、分割与编辑】InFusion、Bootstrap 3D、GaussianGrouping、GaussianEditor等(论文总结)

提示&#xff1a; 文章目录 前言一、InFusion&#xff1a;扩散模型助力&#xff0c;效率提高20倍&#xff01;(2024)1. 摘要2. 算法3. 效果 二、2D Gaussian Splatting三、Bootstrap 3D:从扩散模型引导三维重建1.摘要2.相关工作3.方法1.Boostrapping by Diffusion 通过扩散模型…

科技与心理学的协同舞蹈

在探讨盲人如何利用如“蝙蝠避障”这样的辅助软件融入日常生活的同时&#xff0c;我们不得不深入触及盲人教育心理学的核心&#xff0c;这一领域致力于理解盲人在学习与成长过程中独特的心理需求与挑战&#xff0c;以及如何通过教育策略激发他们的潜能&#xff0c;促进全面发展…

01-Linux【准备篇】

一、学Linux的作用&#xff1f; 1.Linux下开发(部署)软件项目 2.Linux运维 二、Linux的强与弱 1.薄弱 个人桌面领域的应用 此领域是传统Linux应用薄弱的环节&#xff0c;近些年随着Ubuntu、fedora等优秀桌面环境的兴起&#xff0c;Linux在个人桌面领域的占有率在慢慢提高…

对话掌阅科技CTO孙凯:如何用生成式AI重新定义阅读体验

导读&#xff1a;生成式AI能对阅读做本质的改造吗&#xff1f; 读一本好书&#xff0c;犹如和一位智者对话。 对于很多热爱读书的人&#xff0c;这是一种令人憧憬的阅读体验。以往&#xff0c;这种对话只能在读者的头脑和思维中进行。 有没有可能&#xff0c;读者可以随时随地和…

QGIS开发笔记(二):Windows安装版二次开发环境搭建(上):安装OSGeo4W运行依赖其Qt的基础环境Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/139136356 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

OSPF多区域组网实验(华为)

思科设备参考&#xff1a;OSPF多区域组网实验&#xff08;思科&#xff09; 技术简介 OSPF多区域功能通过划分网络为多个逻辑区域来提高网络的可扩展性和管理性能。每个区域内部运行独立的SPF计算&#xff0c;而区域之间通过区域边界路由器进行路由信息交换。这种划分策略适用…