【HBZ分享】ES分词器的拆分规则 及 算法

ES分词器种类

  1. 常见的分词器,如Standard分词器、Simple分词器、Whitespace分词器、IK分词等,还支持自定义分词器(比如一些小国家的语言需要自定义分词器)
  2. ES默认就是Standard分词器

分词器在分词时的过程

  1. 标记化:分词器第一步是将文本拆分成单个标记(tokens), 就是单个的单词或中文词组,这个标记可以是单词,数组,特殊字符,中文词语等。 此时会包含一些分隔符,标点,停用词等,并非最终形态的分词。
  2. 过滤:对第一步分出来的所有标记进行过滤操作,比如大小写转换,去除停用词,去掉分隔符标点等操作,形成最终形态的分词集
  3. 倒排索引:分词完成后,ES会创建倒排索引来存储这些分词, 倒排索引是一种数据结构,通过倒排索引,把分词和文档document(即原始文本)建立起映射关系,当搜索某个分词的时候,就会将映射到的文档进行返回。
  4. 查询匹配:查询时我们输入的文本内容,也会在ES进行分词处理,将搜索内容分词后,拿着分词去倒排索引中进行查询,把匹配到的分词对应的映射document进行返回。

Standard分词器的规则

  1. 标点符号切分:如果文本中含有标点符号,那么会根据标点符号进行拆分,比如apple,peach,food。那么拆分结果就是[apple 和 peach 和 food]这3个,会根据逗号拆分
  2. 词分割: 即按照空格进行拆分, 比如: my name is hbz, 拆分结果就是[my 和 name 和 is 和 hbz]这4个词拆成独立的分词
  3. 小写转换:即会将文本中的大小写全部转成小写, 比如Hellow World, 则拆分结果就是[hellow 和 world], 首字母的H,W都会转成小写的h, w
  4. 停用词过滤: 过滤掉无效的单词,比如a, an, the这种连接词,这些词本身没啥意义,做分词的时候Standard分词器会将这些排除
  5. 词干提取:将单词还原成原始形态, 比如 running–>run, swimming–>swid, going–>go, jumped–>jump
  6. ==注意:以上这5个特点是同时生效的,即一段文本会按照这5中规则进行分词,最终结果一定是符合这5中规则的。 ==

如何查看ES分词存储效果?

GET /索引名称/_analyze
GET /_index/_analyze
{"analyzer": "分词器名称","field": "字段名称""text": "待分析的文本"
}

案例:

#字段是text类型
POST /my_index/_analyze
{"field": "title","text": "This is some text to analyze"
}#字段是text类型
POST /my_index/_analyze
{"field": "title","text": "今天学习了编程知识"
}#字段是keyword类型(keyword是精确匹配,所以不会进行分词,This is some text to analyze作为一个完整体)
POST /my_index/_analyze
{"field": "tags","text": "This is some text to analyze"
}#字段是keyword类型(这是数组的keyword,会将数组的每个元素进行分离出来,但每个元素不会再进行分词了,即结果就是This is, java, Spring Boot。大小写也不会转换,因为根本没走分词器) 
POST /my_index/_analyze
{"field": "tags","text": ["This is","java","Spring Boot" ]
}

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

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

相关文章

UE5数字孪生制作(一) - QGIS 学习笔记

1.下载 QGIS是免费的GIS工具,下载地址: https://www.qgis.org/en/site/ 2.安装 - 转中文 按照步骤安装,完成后,在菜单 设置settings里,选择options,修改语言 确定后,需要重启下软件 3.学习视…

Vue 监听属性 watchEffect

watchEffect 函数:自动收集依赖源,不用指定监听哪个数据,在监听的回调中用到哪个数据,就监听哪个数据。 而 watch 函数:既要指定监听的数据,也要指定监听的回调。 watchEffect 函数:类似于 co…

30天拿下STL

第1天:学习STL的概念和组成部分,了解STL的基本架构和使用方法。 第2-10天:逐一学习STL提供的容器类型,包括vector、list、deque、queue、stack、set、map等,掌握它们的特性、使用方法和常见操作。 第11-15天&#xff1…

前端学习之webpack的使用

概述 webpack是一个流行的前端项目构建工具(打包工具),可以解决当前web开发中所面临的问题。 webpack提供了友好的模块化支持,以及代码压缩混淆、处理js兼容问题、性能优化等强大的功能,从而让程序员把工作重心放到具…

Nignx安装负载均衡动静分离以及Linux前端项目部署将域名映射到特定IP地址

目录 一、nginx简介 1.1 定义 1.2 背景 1.3 作用 二、nginx搭载负载均衡提供前后分离后台接口数据 2.1 nginx安装 2.1.1 下载依赖 2.1.2 下载并解压安装包 2.1.3 安装nginx 2.1.4 启动nginx服务 2.2 tomcat负载均衡 2.2.1 负载均衡所需服务器准备 2.2.2 配置修改 …

室内定位-uwb数据集分享

数据集包括: 数据集包含4个不同室内环境的测量数据,每个环境有8个固定的锚点设备和1个移动的定位设备。 在每个环境中,预先定义了一个人行走路径,并在路径上均匀取样获得定位设备的位置。在每个位置上,收集了定位设备与每个锚点之间的多次测距和信道冲激响应(CIR)数…

ArGIS Engine专题(16)之GP工具实现影像批量复制重采样和按矢量范围批量裁剪

一、结果预览 (1)影像批量复制和重采样 (2)按矢量范围批量裁剪 二、需求简介 本文的最终目的其实是要实现影像按矢量范围批量裁剪,笔者准备处理的影像范围较大,并且是按各个市分块的,要实现统一裁剪时,需要将各个…

研究人员发现34个Windows驱动程序易受完全设备接管攻击

最近,研究人员发现了34个易受攻击的Windows驱动程序,这些漏洞可能被非特权威胁行为者利用来完全接管设备,并在底层系统上执行任意代码。这一发现引发了广泛关注,并引起了Windows用户的担忧。 导语 随着科技的不断进步,…

【APP】go-musicfox - 一款网易云音乐命令行客户端, 文件很小Mac版本只有16.5M

go-musicfox 是用 Go 写的又一款网易云音乐命令行客户端,支持各种音质级别、UnblockNeteaseMusic、Last.fm、MPRIS 和 macOS 交互响应(睡眠暂停、蓝牙耳机连接断开响应和菜单栏控制等)等功能特性。 预览 启动 启动界面 主界面 主界面 通…

windows 使用 EasyScreenLive 和 EasyDarwin 软件实现相机 rtsp 推流

1. 下载软件 实现 rtsp 推流,需要运行(1)rtsp 服务器、(2)rtsp 推流客户端。 rtsp 服务器 EasyDarwin:https://github.com/EasyDarwin/EasyDarwin rtsp 推流客户端 EasyScreenLive:https://git…

基于Taro + React 实现微信小程序半圆滑块组件、半圆进度条、弧形进度条、半圆滑行轨道(附源码)

效果: 功能点: 1、四个档位 2、可点击加减切换档位 3、可以点击区域切换档位 4、可以滑动切换档位 目的: 给大家提供一些实现思路,找了一圈,一些文章基本不能直接用,错漏百出,代码还藏着掖…

MySQL 分组后统计 TopN 优化思路

一、表信息 表结构如下: CREATE TABLE score (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) DEFAULT NULL,score int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT1746687 DEFAULT CHARSETutf8;使用存储过程生成十万条测试数据&am…

JavaScript:事件循环机制(EventLoop)

一、理解进程、线程 进程是操作系统中的基本概念之一,指的是一个正在运行中的程序,包括了程序的执行代码、数据、资源等。操作系统为每个进程分配一定的系统资源,例如内存空间、文件和设备等,以便进程能够正常运行。 线程是进程…

Nginx简介,Nginx搭载负载均衡以及Nginx部署前端项目

目录 一. Nginx简介 Nginx的优点 二. Nginx搭载负载均衡 2.1 Nginx安装 2.1.1 安装依赖 2.1.2 解压nginx安装包 2.1.3 安装nginx 2.1.4 启动nginx服务 2.2 tomcat负载均衡 2.3 Nginx配置 三. Nginx前端部署 一. Nginx简介 NGINX(读作:engi…

气膜场馆的降噪方法

在现代社会,噪音已经成为我们生活中难以避免的问题,而气膜场馆也不例外。传统的气膜场馆常常因其特殊结构而面临噪音扩散和回声问题,影响了人们的体验和活动效果。然而,随着科技的进步,多功能声学综合馆应运而生&#…

vscode开启emmet语法

需要在setting.json中添加配置 首先进入设置,然后点击右上角 Vue项目添加如下配置 "emmet.syntaxProfiles": { "vue-html": "html", "vue": "html" },React项目添加如下配置 "emmet.includeLanguages&quo…

[BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn

居然把第3周忘了写笔记了. 后边难度上来了,还是很有意思的 Crypto Rabins RSA rsa一般要求e与phi互质,但rabin一般用2,都是板子题也没什么好解释的 from Crypto.Util.number import * from secret import flag p getPrime(64) q getPrime(64) assert p % 4 3 assert q %…

大数据Doris(十五):Doris表的字段类型

文章目录 Doris表的字段类型 一、TINYINT数据类型 二、SMALLINT数据类型 三、INT数据类型

【Web】TCP 和 UCP 的含义和区别

文章目录 一、两者含义二、两者区别 一、两者含义 TCP/IP 协议组为传输层指明了两个协议:TCP 和 UDP,他们都是作为应用程序和网络操作的中介物 TCP (传输控制协议):通过三次握手建立可靠的连接,发送端将数据…

JDBC 使用 PreparedStatement 实现批量数据操作

1 批量插入 1.1 批量执行SQL语句 当需要成批插入或者更新记录时,可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下比单独提交处理更有效率 JDBC的批量处理语句包括下面三个方法: addBatch(String…