es 分词器详解

基本概念

分词器官方称之为文本分析器,顾名思义,是对文本进行分析处理的一种手段,基本处理逻辑为按照预先制定的分词规则,把原始文档分割成若干更小粒度的词项,粒度大小取决于分词器规则。

分词器发生的时期

1、分词器的处理过程发生在索引文档创建时期

2、搜索时期,对搜索词进行分词

分词器的组成

  • 切词器(Tokenizer):用于定义切词(分词)逻辑
  • 词项过滤器(Token Filter):用于对分词之后的单个词项的处理逻辑
  • 字符过滤器(Character Filter):用于处理单个字符

注意:分词器不会对源数据产生影响,分词只是对倒排索引以及搜索词的行为

切词器:Tokenizer

tokenizer 是分词器的核心组成部分之一,其主要作用是分词,或称之为切词。主要用来对原始文本进行细粒度拆分。拆分之后的每一个部分称之为一个 Term,或称之为一个词项。可以把切词器理解为预定义的切词规则。官方内置了很多种切词器,默认的切词器为 standard。

词项过滤器:Token Filter

词项过滤器用来处理切词完成之后的词项,例如把大小写转换,删除停用词或同义词处理等。官方同样预置了很多词项过滤器,基本可以满足日常开发的需要。当然也是支持第三方也自行开发的。

比如转为大写:

转为小写:

#转为大写
GET _analyze
{"tokenizer": "standard", "filter": ["uppercase"],"text": ["www elastic co guide"]
}#转为小写
GET _analyze
{"tokenizer": "standard","filter": ["lowercase"],"text": ["WWW ELASTIC CO GUIDE"]
}

停用词

在切词完成之后,会被干掉词项,即停用词。停用词可以自定义

在分词器插件的配置文件中可以看到停用词的定义

比如 ik 分词器定义的停用词如下

演示:

可以看到 are 被停用了

# 停用词
GET _analyze
{"tokenizer": "standard","filter": ["stop"], "text": ["what are you doing"]
}

也可以自定义停用词:

### 自定义 filter
PUT test_token_filter_stop
{"settings": {"analysis": {"filter": {"my_filter": {"type": "stop","stopwords": ["www"],"ignore_case": true}}}}
}
GET test_token_filter_stop/_analyze
{"tokenizer": "standard", "filter": ["my_filter"], "text": ["What www WWW are you doing"]
}

同义词

同义词定义规则

  • a, b, c => d:这种方式,a、b、c 会被 d 代替。
  • a, b, c, d:这种方式下,a、b、c、d 是等价的。

#同义词
PUT test_token_filter_synonym
{"settings": {"analysis": {"filter": {"my_synonym": {"type": "synonym","synonyms": ["good, nice => excellent"]}}}}
}GET test_token_filter_synonym/_analyze
{"tokenizer": "standard", "filter": ["my_synonym"], "text": ["good"]
}

字符过滤器:Character Filter

分词之前的预处理,过滤无用字符。

html 标签过滤器

type:html_strip  表示过滤 html 标签

escaped_tags:  表示需要保留的标签

下面示例,可以看到 p 标签被过滤,而 a 标签保留

#字符过滤器
PUT test_html_strip_filter
{"settings": {"analysis": {"char_filter": {"my_char_filter": {"type": "html_strip","escaped_tags": ["a"]}}}}
}GET test_html_strip_filter/_analyze
{"tokenizer": "standard","char_filter": ["my_char_filter"],"text": ["<p>I&apos;m so <a>happy</a>!</p>"]
}

字符映射过滤器:Mapping Character Filter

通过定义映替换为规则,把特定字符替换为指定字符

"type": "mapping"   表示字符映射

mappings 里面配置需要映射的字符关系

PUT test_html_strip_filter
{"settings": {"analysis": {"char_filter": {"my_char_filter": {"type": "mapping",   "mappings": [                 "大 => *","可 => *","爱 => *"]}}}}
}
GET test_html_strip_filter/_analyze
{"char_filter": ["my_char_filter"],"text": "你就是一个大可爱"
}

正则替换过滤器:Pattern Replace Character Filter

"type": "pattern_replace"   表示正则替换

#正则替换
PUT text_pattern_replace_filter
{"settings": {"analysis": {"char_filter": {"my_char_filter": {"type": "pattern_replace",   "pattern": """(\d{3})\d{4}(\d{4})""",    "replacement": "$1****$2"}}}}
}
GET text_pattern_replace_filter/_analyze
{"char_filter": ["my_char_filter"],"text": "您的手机号是18868686688"
}

感谢观看!!!感兴趣的小伙伴可以关注收藏,持续更新中!

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

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

相关文章

实现支持多选的QComboBox

Qt提供的QComboBox只支持下拉列表内容的单选&#xff0c;但通过QComboBox提供的setModel、setView、setLineEdit三个方法&#xff0c;可以对QComboBox进行改造&#xff0c;使其实现下拉列表选项的多选。 QComboBox可以看作两个组件的组合&#xff1a;一个QLineEdit和一个QList…

ctfshow web入门 php特性总结

1.web89 intval函数的利用&#xff0c;intval函数获取变量的整数值&#xff0c;失败时返回0&#xff0c;空的数组返回&#xff0c;非空数组返回1 num[]1 intval ( mixed $var [, int $base 10 ] ) : int Note: 如果 base 是 0&#xff0c;通过检测 var 的格式来决定使用的进…

【工具】Git的介绍与安装

目录 前言 1W&#xff1a;什么是Git&#xff1f; 2W&#xff1a;为什么使用Git&#xff1f; 3W&#xff1a;如何使用Git&#xff1f; Git的安装步骤 测试 3.1 桌面空白部分鼠标右击 3.2 选择 Open Git Bash here 3.3 输入 git -v 命令查看版本 Git区域分布 Git的工作…

软件无线电系列——软件无线电的发展历程及体系框架

本节目录 一、软件无线电的起始 二、软件无线电SDR论坛 三、SPEAKeasy计划 四、JTRS与SCA 五、软件无线电体系框架本节内容 一、软件无线电的起始 1992年5月&#xff0c;美国电信会议上&#xff0c;Joseph Mitola III博士提出来软件无线电(Software Radio,SR)的概念。理想化的…

C语言演示多线程编程条件下自旋锁和屏障的使用

主线故事: 有4个人玩游戏输了,惩罚: 1 分别使用4台不同的ATM机给我存钱 2 必须一块一块的存 3 存完还得在ATM上看一下我的余额 设计模式: 1 每个人使用一条单独的线程,再准备一个计时线程用来输出时间 2 存钱 涉及到 对共享资源的读写,是原子操作需要用锁保护 这里使用自…

windows下安装python virtualenv 虚拟环境

1、首先验证 python 是否安装成功 python -V Python 3.8.2如果出现版本号&#xff0c;表示安装成功了 2、通过 pip 安装 virtualenv pip install virtualenv3、创建虚拟环境 C:\Users\capitek-fengxl> mkvirtualenv blog # 激活虚拟环境 C:\Users\capitek-fengxl> …

SQL 优化实践:关于增强 OceanBase本地索引性能的案例

本文通过一个案例&#xff0c;帮用户了解在Oracle迁移Oceanbase时&#xff0c;应该如何选择全局索引和本地索引以带来更好的SQL性能。 作者&#xff1a;胡呈清&#xff0c;爱可生的DBA团队成员&#xff0c;擅长故障分析和性能优化。本文约 5000 字&#xff0c;预计阅读需要 15 …

GPT实战系列-LangChain实现简单链

GPT实战系列-LangChain实现简单链 LangChain GPT实战系列-LangChain如何构建基通义千问的多工具链 GPT实战系列-构建多参数的自定义LangChain工具 GPT实战系列-通过Basetool构建自定义LangChain工具方法 GPT实战系列-一种构建LangChain自定义Tool工具的简单方法 GPT实战系…

Qt/QML编程之路:fork、vfork、exec、clone的对比及使用(46)

前言: 系统调用system call是OS提供的服务提供接口。系统调用fork()、vfork()、exec()和clone()都用于创建和操作进程。Linux下Qt编程也会用到vfork进行多进程间通信。让我们看一下以下每个系统调用的概述和比较: fork()、vfork()和clone()的工作原理相似,但在处…

「jQuery系列」jQuery DOM操作/尺寸

文章目录 一、jQuery DOM操作元素选择元素创建元素插入元素删除元素复制属性操作文本和 HTML 内容操作CSS 类操作遍历 DOM 二、jQuery 尺寸案例一&#xff1a;获取元素尺寸案例二&#xff1a;设置元素尺寸案例三&#xff1a;使用内外尺寸方法 三、热门文章 一、jQuery DOM操作 …

【Vue】.sync 修饰符作用

文章目录 基本用法 基本用法 官方文档是这样介绍的&#xff1a;.sync 修饰符 简单来说就是实现父子组件数据之间的双向绑定&#xff0c;当子组件修改了一个 props 的值时&#xff0c;也会同步到父组件中&#xff0c;实现子组件同步修改父组件&#xff0c;与v-model类似。类别在…

计算机网络面经八股-什么是 SYN洪泛攻击?如何防范?

SYN洪泛攻击属于 DOS 攻击的一种&#xff0c;它利用 TCP 协议缺陷&#xff0c;通过发送大量的半连接请求&#xff0c;耗费 CPU 和内存资源。 原理&#xff1a; 在三次握手过程中&#xff0c;服务器发送 [SYN/ACK] 包&#xff08;第二个包&#xff09;之后、收到客户端的 [ACK…

狂飙Linux平台,PostgreSQL16部署大全

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

VUE学习第三篇----VUE实例

1、当一个 Vue 实例被创建时&#xff0c;它将 data 对象中的所有的 property 加入到 Vue 的响应式系统中。当这些 property 的值发生改变时&#xff0c;视图将会产生“响应”&#xff0c;即匹配更新为新的值。 html网页文件如下所示&#xff1a; <html> <head> &…

CSS note

文章目录 CSS docCSS 盒子模型微信小程序 WXSSrpx: responsive pixel. 规定屏幕宽度为 750 rpx样式导入引用外部样式 内联样式选择器CSS 语法列举排版 CSS doc https://www.w3schools.com/cssref/pr_class_position.php https://www.w3schools.com/css/tryit.asp?filenametry…

JavaSE——面向对象高级一(3/4)-面向对象三大特征之二:继承(初步认识继承、了解继承的好处)

目录 认识继承 继承的好处 认识继承 什么是继承&#xff1f; Java中提供了一个关键字extends&#xff0c;用这个关键字&#xff0c;可以让一个类和另一个类建立起父子关系。 例如&#xff1a; public class B extends A{} 此时A类就称为父类&#xff08;基类或超类&…

MySQL Connector连接失败之SSL connection error: protocol version mismatch

调用 mysql_real_connect&#xff08;&#xff09; 连接失败&#xff0c;报错为ERROR 2026 (HY000): SSL connection error: protocol version mismatch 调用mysql_error&#xff08;&#xff09;查看失败原因&#xff0c;结果为 SSL connection error: protocol version …

人口性别年龄分布数据、不同年龄结构、性别结构人口分布数据、乡镇街道人口分布数据

人口分布是指人口在一定时间内的空间存在形式、分布状况&#xff0c;包括各类地区总人口的分布&#xff0c;以及某些特定人口&#xff08;如城市人口、、特定的人口过程和构成&#xff08;如迁移、性别等&#xff09;的分布等。 人口分布的最大特征是不平衡性。就全世界而言&am…

mysql 替换空值

函数 IFNULL() 用于判断一个表达式时否为NULL,如果为 NULL 则返回指定的代替值&#xff0c;否则返回原表达式的值。 函数&#xff1a; IFNULL(expression,alternavicate_value) expression 要判断的表达式alternavicate_value 当表达式为 NULL时要返回的代替值

Kafka整理-Consumer(消费者)

在Apache Kafka中,消费者(Consumer)是负责从Kafka的主题(Topics)读取数据的客户端应用程序。Kafka消费者的主要特点和工作原理如下: 主要特点 1、订阅主题: 消费者可以订阅一个或多个Kafka主题,并从中读取数据。2、消费者群组(Consumer Groups): 消费者可以组成消费…