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

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.xdnf.cn/news/10013.html

相关文章:

  • Camera相机人脸识别系列专题分析之六:MTK ISP6S平台人脸识别fdnode流程FdNodeImp.cpp详解
  • Xamarin劝退之踩坑笔记
  • 苹果签名!
  • 数据清理的例子
  • 【仿生机器人】仿生机器人认知-情感系统架构设计报告
  • 【Java工程师面试全攻略】Day4:JVM原理与性能调优深度解析
  • 达梦数据库:同1台服务器如何启动不同版本的DMAP服务
  • 【Docker管理工具】部署Docker管理面板DweebUI
  • 思维革命:DeepSeek-R1-0528 如何用一次小更新颠覆大模型格局
  • 每日算法-250530
  • 企业级安全实践:SSL/TLS 加密与权限管理(二)
  • 支持功能安全ASIL-B的矩阵管理芯片IS32LT3365,助力ADB大灯系统轻松实现功能安全等级
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(五):语音合成输出与交互增强
  • JVM 性能调优
  • Day40打卡 @浙大疏锦行
  • 低功耗架构突破:STM32H750 与 SD NAND (存储芯片)如何延长手环续航至 14 天
  • 使用vscode进行c/c++开发的时候,输出报错乱码、cpp文件本身乱码的问题解决
  • 外包项目交付后还能怎么加固?我用 Ipa Guard 给 iOS IPA 增加了一层保障
  • 数据库暴露--Get型注入攻击
  • C++?多态!!!
  • Git的简单介绍分析及常用使用方法
  • openppp2 -- 1.0.0.25225 优化多线接入运营商路由调配
  • 电路笔记(通信):CAN 仲裁机制(Arbitration Mechanism) 位级监视线与特性先占先得非破坏性仲裁
  • 【机器人】具身导航 VLN 最新论文汇总 | Vision-and-Language Navigation
  • 人工智能100问☞第37问:什么是扩散模型?
  • 【清晰教程】利用Git工具将本地项目push上传至GitHub仓库中
  • 【开源工具】音频格式转换大师:基于PyQt5与FFmpeg的高效格式转换工具开发全解析
  • Go语言使用阿里云模版短信服务
  • 类 Excel 数据填报
  • LVS-NAT 负载均衡群集