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

Elasticsearch 分析器介绍

在 Elasticsearch 的世界里,构建高效搜索引擎的关键一环,便是透彻理解分析器(Analyzer)的工作机制。一个优秀的搜索引擎,能够精准地返回与用户查询紧密相关的文档,而这背后,正是分析器在默默发挥着核心作用。它不仅负责处理待索引的文档,还在用户发起查询时,智能评估哪些文档与查询关键词的匹配度更高。

一、倒排索引:分析器的基石

在深入探讨分析器之前,有必要先了解与之紧密关联的倒排索引。倒排索引是一种极为重要的数据结构,它建立起了分词与包含该分词的文档编号之间的映射关系。此外,倒排索引还记录了分词在文档中的具体位置信息。正是得益于这种映射机制,Elasticsearch 在处理关键词查询时

,能够迅定位并返回匹配文档的编号。

1.1、文档构建倒排索引实例

假设有以下两条文档:

  • 文档 1:Elasticsearch is fast速文档 2:I want to learn Elasticsearch

经过处理后,倒排索引构建结果如下(第一列为分词内容,第二列为分词出现的次数,第三列为分词所在的文档编号以及在文档中的位置)。通过倒排索引,分词被统计后映射到文档编号,并保存了其在文档中的位置。这里之所以看不到完整文档,正是因为文档已经过分析器的分析处理,这也正是本文要深入探讨的重点。

1.2、在倒排索引中查询的奥秘

在倒排索引中执行查询时,有一个关键要点需要注意:Elasticsearch 只会获取与查询关键词具有相同分词的文档。这一特性可以通过 match query 和 term query 两类查询进行验证。其中,match query 会借助分析器对查询内容进行分析,而 term query 则不会。在另一篇相关文档中,对这两类查询的区别有着详细的阐述。

以 “Elasticsearch” 为关键词进行查询为例,如果使用 term query,将不会得到任何结果,原因在于倒排索引中存储的分词是 “elasticsearch”,其开头字母为小写的 “e”。而使用 match query 进行相同关键字的查询时,Elasticsearch 会先利用分析器对查询关键字进行分析,得到 “elasticsearch”,然后再到倒排索引中检索,从而能够返回相应结果。

二、Elasticsearch 中的分析器:文档处理的核心

当向 Elasticsearch 插入一篇文档时,系统并不会直接原样保存文档内容,而是会先交由分析器进行分析。在分析过程中,分析器首先会对文本进行转换,并将其拆分为一个个分词,随后再将这些分词保存到倒排索引中。例如,将 “Let’s build an Autocomplete!” 插入 Elasticsearch 时,文本转换后会被划分为 “let’s”、“build”、“an” 和 “autocomplete” 这 4 个分词。

值得注意的是,分析器影响的是搜索文本的方式,并不会改变文本本身的内容。比如在上述例子中,即使搜索 “let”,Elasticsearch 返回的依然是全文 “Let's build a

http://www.lryc.cn/news/2394455.html

相关文章:

  • 【KWDB 创作者计划】_探秘浪潮KWDB数据库:从时间索引到前沿技术
  • 安卓逆向篇LSP 模块HOOK 添加技术绕过检测算法解密逻辑验证
  • 【SQL】关键字
  • 第一节 51单片机概述
  • Google car key:安全、便捷的汽车解锁新选择
  • 720全景展示:VR全景的技术原理及应用
  • 定制一款国密浏览器(13):预置国密根证书到浏览器
  • PowerBI企业运营分析——线性回归销售预测
  • 大模型运维过程中常见的一些操作
  • C# 关于闭包与多线程结合使用
  • LangFuse:开源LLM工程平台的革新实践
  • 新视角!经济学顶刊QJE用文本分析探究新技术扩散
  • 微信小程序返回上一页监听
  • 5月31日day41打卡
  • “粽”览全局:分布式系统架构与实践深度解析(端午特别版)
  • STM32G4 电机外设篇(一) GPIO+UART
  • 代理IP在云计算中的应用:技术演进与场景实践
  • Lua 的速度为什么比 Python 快
  • 【iOS】方法交换
  • 跑步相关术语解释
  • 数据结构:线性表的基本操作与链式表达
  • C++:设计模式--工厂模式
  • 【前端优化】使用speed-measure-webpack-plugin分析前端运行、打包耗时,优化项目
  • 国产化Excel处理组件Spire.XLS教程:如何使用 C# 将 Excel(XLS 或 XLSX)文件转换为 PDF
  • B3623 枚举排列(递归实现排列型枚举)
  • vue-08(使用slot进行灵活的组件渲染)
  • Fine Pruned Tiled Light Lists(精细删减的分块光照列表)
  • 2025-5-29-C++ 学习 字符串(3)
  • openresty+lua+redis把非正常访问的域名加入黑名单
  • 使用Mathematica绘制随机多项式的根