ES搜索原理

server/2024/12/26 21:52:30/

ES搜索原理

bg: 搜索的时候,使用模糊查询经常出现搜索不到的情况,不如mysql的like有效。

https://www.bilibili.com/video/BV1yb421J7oX/?spm_id_from=333.337.search-card.all.click&vd_source=3f917722acc36b0fcca7cca2d21394e2

基础概念

在这里插入图片描述

  • 索引(Index):相当于关系型数据库中的数据库,是一个拥有相似特征的文档的集合。例如,可以为客户数据、商品目录、订单数据等分别建立不同的索引12.
  • 文档(Document):是可以被索引的基本信息单元,以 JSON 格式表示,类似于关系型数据库中的一行数据。一个文档可以包含多个字段,每个字段有其对应的值,如一篇文章、一个用户信息等都可以作为一个文档存储在 ES 中12.
  • 字段(Field):组成文档的最小单位,相当于关系型数据库中的一列数据23.
  • 映射(Mapping):用来定义一个文档以及其所包含的字段如何被存储和索引,包括定义字段的名称、类型,以及所使用的分词器等,类似于关系型数据库中的 Schema23.
  • 分片(Shards):由于数据量可能很大,一个索引会被分成多个分片来存储在不同的节点上,以实现水平扩展和分布式存储,每个分片可以是单个节点的一部分,也可以跨越多个节点。每个分片包含一部分数据,并且每个分片都有一个主分片和一个或多个复制分片,主分片负责处理写入操作,而复制分片用于容错和读取操作13.

倒排索引(反向索引)搜索原理

倒排索引的构建过程
文档预处理阶段
  • 分词(Tokenization): 将文档拆分成单词或词汇单元。这个过程使用分词器,将文本切分成有意义的词语,形成一个词汇列表。
  • 去停用词(Stopword Removal): 移除常见且在搜索中没有实际意义的词语,如“的”、“是”等。这有助于提高倒排索引的效率和准确性。
  • 词干提取(Stemming): 将词语还原为其词干形式,去除词尾,以便将相关的词汇映射到同一词根,减少索引的大小。
倒排生成阶段
  • 建立词汇表: 将预处理后的文档中的所有唯一词语构建成一个词汇表。每个词汇都有一个唯一的标识符。+ 建立词汇表: 将预处理后的文档中的所有唯一词语构建成一个词汇表。每个词汇都有一个唯一的标识符。
  • 映射关键词到文档ID: 遍历每个文档,对于文档中的每个关键词,将其映射到文档的唯一标识符(文档ID)。这样的映射关系通常以字典的形式保存。+ 映射关键词到文档ID: 遍历每个文档,对于文档中的每个关键词,将其映射到文档的唯一标识符(文档ID)。这样的映射关系通常以字典的形式保存。
  • 生成倒排列表: 对于每个关键词,创建一个倒排列表,其中包含映射到该关键词的所有文档ID。倒排列表实际上是一个映射,将关键词与包含该关键词的文档关联起来。+ 生成倒排列表: 对于每个关键词,创建一个倒排列表,其中包含映射到该关键词的所有文档ID。倒排列表实际上是一个映射,将关键词与包含该关键词的文档关联起来。

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2024%2Fpng%2F22028291%2F1733676886031-c5a3898c-7648-468b-a188-647ad31a07d8.png&pos_id=img-xcLT1K00-173475058792

检索过程分析

搜索引擎的检索过程是通过倒排索引来实现的,这个过程可以分为几个关键步骤,让我们逐步解析搜索引擎如何利用倒排索引进行检索,并强调倒排索引在快速定位相关文档方面的高效性。

1. 用户查询输入:

  • 用户在搜索引擎中输入关键词或查询短语,希望找到相关的文档。

2. 关键词分析:

  • 搜索引擎对用户输入的查询进行关键词分析,进行类似于文档预处理的步骤,包括分词、去停用词、词干提取等。

3. 查询到关键词的倒排列表:

  • 对于每个关键词,搜索引擎通过倒排索引找到与之相关的文档ID列表。

4. 倒排列表的交集操作:

  • 如果查询包含多个关键词,搜索引擎会对这些关键词的倒排列表进行交集操作,得到包含所有关键词的文档ID列表。

5. 文档排序和排名:

  • 搜索引擎根据某种算法对得到的文档ID列表进行排序和排名,以便将最相关的文档排在前面。

6. 返回搜索结果:

  • 最终,搜索引擎将排名最高的文档作为搜索结果返回给用户,呈现在搜索结果页面上。

倒排索引的设计使得搜索引擎能够在海量文档中迅速定位包含查询关键词的文档,因此在检索过程中具有高效性。通过直接访问倒排列表,搜索引擎可以快速获取包含关键词的文档ID,而不需要逐一扫描所有文档。这种高效的检索过程是搜索引擎能够迅速响应用户查询的关键。


http://www.ppmy.cn/server/153438.html

相关文章

基于单片机的智能婴儿床监护系统多功能婴儿床摇篮系统

功能描述 以STM32单片机为控制核心 蓝牙传输控制 可以进行哭闹检测、尿床检测、音乐播放、语音提醒、 哭闹时可以进行摇床 有不同的模式 自动模式和睡眠模式 实物可做&#xff0c;学习资料齐全其他功能实物也可以 电路图 PCB 源代码 #include <reg52.h> #include <in…

OpenHarmony-6.IPC/RPC组件

IPC/RPC组件机制 1.基本概念 IPC&#xff1a;设备内的进程间通信&#xff08;Inter-Process Communication&#xff09;。 RPC&#xff1a;设备间的进程间通信&#xff08;Remote Procedure Call&#xff09;。 IPC/RPC用于实现跨进程通信&#xff0c;不同的是前者使用Binder驱…

C# OpenCV机器视觉:尺寸测量

转眼就是星期一了&#xff0c;又到了阿强该工作的时候了&#xff01;阿强走进了他作为机器视觉工程师的办公室&#xff0c;准备迎接新一天的挑战。随着周末的结束&#xff0c;他心中暗想&#xff1a;“如果我能让机器像我一样聪明&#xff0c;那就太好了&#xff01;” 正当他…

Docker在Ubuntu上安装

Docker在Ubuntu上安装 1.安装&#xff1a;&#xff08;1&#xff09;添加Docker仓库&#xff1a;&#xff08;2&#xff09;安装Docker CE&#xff08;Docker社区版&#xff09;&#xff1a;&#xff08;3&#xff09;验证是否安装成功&#xff1a;&#xff08;4&#xff09;添…

【Redis经典面试题六】Redis的持久化机制是怎样的?

目录 一、Redis的持久化机制 1.1 RDB 1.2 AOF 1.3 比较 1.4 混合持久化 二、RDB 和 AOF 的写回策略分别是什么&#xff1f; 2.1 RDB的写回策略 定期触发 手动触发 2.2 AOF 的写回策略 三、Redis能完全保证数据不丢失吗&#xff1f; 一、Redis的持久化机制 Redis提供…

【Qt】了解和HelloWorld

目录 0.用户交互界面风格 Windows下GUI开发方案&#xff1f; 1.Qt简介 1.1 版本Qt5. 1.2搭建Qt开发环境 需要安装3个工具 安装过程 熟悉QtSDK重要工具 2.使用Qt Creator创建项目 2.1代码解释 2.2helloworld 1.图形化方式 2.代码方式 0.用户交互界面风格 1.TUI&…

Android 系统 `bootable/recovery` 目录下 `miniui` 框架深度分析

Android 系统 bootable/recovery 目录下 miniui 框架深度分析 引言 在Android系统中,bootable/recovery目录是负责系统恢复和OTA(Over-The-Air)更新的核心部分。miniui框架是该目录下的一个重要组件,它为Android设备提供了一个轻量级的用户界面,用于在恢复模式下与用户进…

08 Django - Django媒体文件静态文件文件上传

九、Django媒体文件&静态文件&文件上传 1.静态文件和媒体文件 媒体文件: 用户上传的文件, 叫做media静态文件: 存放在服务器的 css, js, image等,叫做static 在Django中使用静态文件 {% static img/example.jpg %} > static模板关键字就是在settings.py中指定的…