【Elasticsearch】分析器的构成

在Elasticsearch中,分析器(Analyzer)是一个处理文本数据的管道,它将输入的文本转换为一系列词元(tokens),并可以对这些词元进行进一步的处理和规范化。分析器由以下三个主要组件构成:

1.字符过滤器(Character Filters)

字符过滤器是分析器管道中的第一步,用于对输入文本进行预处理。它们可以添加、删除或修改文本中的字符。字符过滤器是可选的,一个分析器可以有零个或多个字符过滤器。

• 常见用途:例如,可以使用字符过滤器去除HTML标签(如`<b>`、`<h1>`等),或者将某些特定字符替换为其他字符。

• 示例:如果输入文本是`<p>Ironman is flying</p>`,通过`html_strip`字符过滤器后,文本会被转换为`Ironman is flying`。

2.分词器(Tokenizer)

分词器是分析器的核心组件,负责将文本分割成单独的词元(tokens)。分词器根据特定的规则(如空白字符、标点符号或语言规则)将文本拆分为多个词元。一个分析器必须且只能有一个分词器。

• 常见分词器:

• 标准分词器(Standard Tokenizer):根据语法和标点符号将文本分割成词元。

• 空白分词器(Whitespace Tokenizer):在遇到空白字符时将文本分割成词元。

• N-gram分词器:生成文本的N-gram片段,常用于自动补全。

• 示例:对于文本`Ironman is flying`,使用空白分词器会生成词元`[Ironman, is, flying]`。

3.词元过滤器(Token Filters)

词元过滤器是分析器管道中的最后一步,用于对分词器生成的词元进行进一步处理。它们可以添加、修改或删除词元,但不能改变词元的位置或字符偏移量。

• 常见用途:

• 小写过滤器(Lowercase Token Filter):将所有词元转换为小写。

• 停用词过滤器(Stop Token Filter):移除常见的停用词(如`the`、`is`等)。

• 同义词过滤器(Synonym Token Filter):引入同义词。

• 词干提取(Stemming):将词元还原为词根形式(如将`went`还原为`go`)。

• 示例:对于词元`[Ironman, is, flying]`,使用小写过滤器后会生成`[ironman, is, flying]`。

总结

分析器通过这三个组件的协同工作,将输入的文本转换为适合索引和搜索的词元流。通过合理配置字符过滤器、分词器和词元过滤器,可以实现对文本的灵活处理,从而提高搜索结果的相关性和准确性。


分析器的构成

 

分析器——无论是内置的还是自定义的——只是一个包含三个低级构建块的包:字符过滤器、分词器和词元过滤器-character filters, tokenizers, and token filters.。

内置分析器将这些构建块预先打包成适合不同语言和文本类型的分析器。Elasticsearch还暴露了这些单独的构建块,以便它们可以组合起来定义新的`自定义`分析器。

字符过滤器接收原始文本作为字符流,并可以通过添加、删除或更改字符来转换该流。例如,字符过滤器可以用于将印度-阿拉伯数字(٠‎١٢٣٤٥٦٧٨‎٩‎)转换为其阿拉伯-拉丁数字等价物(0123456789),或者从流中删除HTML元素,如`<b>`。

分析器可以有零个或多个字符过滤器,这些过滤器按顺序应用。

分词器接收字符流,将其分解为单独的词元(通常是单个单词),并输出一个词元流。例如,`whitespace`分词器会在看到任何空白字符时将文本分解为词元。它会将文本`"Quick brown fox!"`转换为词元`[Quick, brown, fox!]`。

分词器还负责记录每个词元的顺序或位置以及原始单词的起始和结束字符偏移量。

分析器必须有恰好一个分词器。

词元过滤器接收词元流,并可以添加、删除或更改词元。例如,`lowercase`词元过滤器将所有词元转换为小写,`stop`词元过滤器从词元流中移除常见词汇(停用词)如`the`,而`synonym`词元过滤器会向词元流中引入同义词。

词元过滤器不允许更改每个词元的位置或字符偏移量。

分析器可以有零个或多个词元过滤器,这些过滤器按顺序应用。

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

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

相关文章

【ThreeJS Basics 1-3】Hello ThreeJS,实现第一个场景

文章目录 环境创建一个项目安装依赖基础 Web 页面概念解释编写代码运行项目 环境 我的环境是 node version 22 创建一个项目 首先&#xff0c;新建一个空的文件夹&#xff0c;然后 npm init -y , 此时会快速生成好默认的 package.json 安装依赖 在新建的项目下用 npm 安装依…

【JavaEE进阶】依赖注入 DI详解

目录 &#x1f334;什么是依赖注入 &#x1f384;依赖注入的三种方法 &#x1f6a9;属性注⼊(Field Injection) &#x1f6a9;Setter注入 &#x1f6a9;构造方法注入 &#x1f6a9;三种注⼊的优缺点 &#x1f333;Autowired存在的问题 &#x1f332;解决Autowired存在的…

在Mac arm架构终端中运行 corepack enable yarn 命令,安装yarn

文章目录 1. 什么是 Corepack&#xff1f;2. 运行 corepack enable yarn 的作用3. 如何运行 corepack enable yarn4. 可能遇到的问题及解决方法问题 1&#xff1a;corepack 命令未找到问题 2&#xff1a;Yarn 未正确安装问题 3&#xff1a;权限问题 5. 验证 Yarn 是否启用成功6…

16.React学习笔记.React更新机制

一. 发生更新的时机以及顺序## image.png props/state改变render函数重新执行产生新的VDOM树新旧DOM树进行diff计算出差异进行更新更新到真实的DOM 二. React更新流程## React将最好的O(n^3)的tree比较算法优化为O(n)。 同层节点之间相互比较&#xff0c;不跨节点。不同类型的节…

SQL数据清理:去除字段值中的多余符号(Demo例子)

目录 前言1. 基础2. 进阶 前言 Excel中有大量不合法的符号&#xff0c;导入到系统之后&#xff0c;数据库有很多脏数据&#xff0c;对此下述展开sql的清洗教程 在数据库的文本字段中&#xff0c;可能会存在多余的逗号或符号&#xff0c;如,销售,, 或 二手车,销售,,这种情况 希…

计算机组成原理

观看地址如下【2019版】1.3.2 性能指标2——速度_哔哩哔哩_bilibili 第一章 计算机系统概述 了解 #低电平高电平 #计算机的发展 主要是因为逻辑元件的限制 选择题 微处理器的发展 这里的机器字长为 软硬件的发展 几种指令和数据流 计算机的系统结构 需求产生变化 电信号…

基于MATLAB的沥青试样孔隙率自动分析——原理详解与代码实现

摘要 在材料科学与土木工程领域&#xff0c;沥青孔隙率是评价其耐久性和稳定性的重要指标。本文提出一种基于图像处理的孔隙率自动计算方法&#xff0c;通过MATLAB实现灰度化、对比度增强、形态学处理等关键步骤&#xff0c;最终输出试样孔隙率。代码注释清晰&#xff0c;可直…

【嵌入式Linux应用开发基础】open函数与close函数

目录 一、open函数 1.1. 函数原型 1.2 参数说明 1.3 返回值 1.4. 示例代码 二、close函数 2.1. 函数原型 2.2. 示例代码 三、关键注意事项 3.1. 资源管理与泄漏防范 3.2. 错误处理的严谨性 3.3. 标志&#xff08;flags&#xff09;与权限&#xff08;mode&#xff…

【通俗易懂说模型】一篇弄懂几个经典CNN图像模型(AlexNet、VGGNet、ResNet)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …

Android 14.0 Launcher3单层模式workspace中app列表页排序功能实现

1.概述 在14.0的定制化开发中,对于Launcher3的功能定制也是好多的,而对于单层app列表页来说排序功能的开发,也是常有的功能这就需要了解加载app数据的流程,然后根据需要进行排序就可以了,接下来就来实现这个功能 如图: 2. Launcher3单层模式workspace中app列表页排序功能…

8K样本在DeepSeek-R1-7B模型上的复现效果

7B Model and 8K Examples: Emerging Reasoning with Reinforcement Learning is Both Effective and Effic (notion.site) 港科大助理教授何俊贤的团队以Qwen2.5-Math-7B&#xff08;基础模型&#xff09;为起点&#xff0c;直接对其进行强化学习。整个过程中&#xff0c;没有…

四、自然语言处理_08Transformer翻译任务案例

0、前言 在Seq2Seq模型的学习过程中&#xff0c;做过一个文本翻译任务案例&#xff0c;多轮训练后&#xff0c;效果还算能看 Transformer作为NLP领域的扛把子&#xff0c;对于此类任务的处理会更为强大&#xff0c;下面将以基于Transformer模型来重新处理此任务&#xff0c;看…

MATLAB 生成脉冲序列 pulstran函数使用详解

MATLAB 生成脉冲序列 pulstran函数使用详解 目录 前言 一、参数说明 二、示例一 三、示例二 总结 前言 MATLAB中的pulstran函数用于生成脉冲序列&#xff0c;支持连续或离散脉冲。该函数通过将原型脉冲延迟并相加&#xff0c;生成脉冲序列&#xff0c;适用于信号处理和系统…

算法练习——滑动窗口

前言&#xff1a;滑动窗口的难点不在于怎么编写代码&#xff0c;而在于如何想到这题是用滑动窗口的算法去解决。其次滑动窗口的左端和右端在滑动时窗口内数据存在单调性。 一&#xff1a;长度最小的子数组 题目要求&#xff1a; 解题思路&#xff1a; 对于第一道滑动窗口算法…

Zabbix-监控SSL证书有效期

背景 项目需要&#xff0c;需要监控所有的SSL证书的有效期&#xff0c;因此需要自定义一个监控项 实现 创建自定义脚本 在Zabbix的scripts目录(/etc/zabbix/scripts/)下创建一个新的shell脚本check_ssl.sh&#xff0c;内容如下 #!/bin/bash time$(echo | openssl s_client…

VSCode中出现“#include错误,请更新includePath“问题,解决方法

1、出现的问题 在编写C程序时&#xff0c;想引用头文件但是出现如下提示&#xff1a; &#xff08;1&#xff09;首先检查要引用的头文件是否存在&#xff0c;位于哪里。 &#xff08;2&#xff09;如果头文件存在&#xff0c;在编译时提醒VSCode终端中"#include错误&am…

讯方·智汇云校华为授权培训机构的介绍

官方授权 华为授权培训服务伙伴&#xff08;Huawei Authorized Learning Partner&#xff0c;简称HALP&#xff09;是获得华为授权&#xff0c;面向公众&#xff08;主要为华为企业业务的伙伴/客户&#xff09;提供与华为产品和技术相关的培训服务&#xff0c;培养华为产业链所…

LabVIEW商业软件开发

在商业软件开发和仪器自动测试领域&#xff0c;LabVIEW以其图形化编程方式、高效的数据采集能力和强大的硬件集成优势&#xff0c;成为众多工程项目的核心开发工具。然而&#xff0c;商业软件的开发远不止编写代码和实现功能那么简单&#xff0c;尤其是在仪器自动测试领域&…

优化关键词还有哪些软件可用?

随着2025年互联网的发展&#xff0c;越来越多的企业认识到关键词优化的重要性。SEO&#xff08;搜索引擎优化&#xff09;作为提升网站流量和排名的重要手段&#xff0c;已经成为每个企业营销战略中的核心组成部分。而在SEO优化过程中&#xff0c;关键词的选择和优化无疑是至关…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<9>

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。 这一节是对之前内容的修整 目录 一、传值调用和传址调用二、数组名的理解三、指针访问数组四、结尾 一…