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

重生之我们在ES顶端相遇第15 章 - ES 的心脏-倒排索引

文章目录

      • 前言
      • 为什么叫倒排索引
      • 数据结构
      • 如何生成
      • 如何查询
      • TF、IDF
      • 参考文档

前言

上一章,简单介绍了 ES 的节点类型。
本章,我们要介绍 ES 中非常重要的一个概念:倒排索引。
ES 的全文索引就是基于倒排索引实现的。
本章内容建议重点学习,因为面试也常问。

为什么叫倒排索引

倒排索引指的是将每一个关键字映射到它出现的文档中。如下图所示
在这里插入图片描述

因为结构是倒着的,因此被称为倒排索引。

数据结构

倒排索引分为 2 部分:一部分叫 term directory(term 词典),一部分叫 posting list(倒排列表)。如下图所示
在这里插入图片描述

  • term directory
    term 字典,存放着每个单词到对应倒排列表的映射关系

  • posting list
    Docs 是一个数组。其中 1:2:[2,6] 意思如下

    • 1:文档ID
    • 2:词频(term frequency)
    • [2,6]:出现在文档中的第 2,6 个 term。

如何生成

这里涉及到我们之前讲过的分词器。工作流程如下图所示
在这里插入图片描述

大体就包含2部分,根据分词器将文本分词,然后根据分词生成倒排索引。

如何查询

例如我们查询:To do right
则该文本会先被分词为:to, do, right
对应的结果如下图所示:
在这里插入图片描述

TF、IDF

默认情况下,ES 会根据文档与搜索词的相关性得分对结果降序返回。相关性得分与以下 2 个概念有关(稍做了解,后续会出文章做更深入的介绍)

  • Term Frequency(TF):term 在文档中出现的频率,得分正相关。出现频率越高,得分越高
  • Inverted Document Frequency(IDF):term 在 所有文档 中出现的频率,得分负相关。出现频率越高,得分越低。

参考文档

Indexing: Inverted Index


http://www.kler.cn/a/314351.html

相关文章:

  • MySQL(5)【数据类型 —— 字符串类型】
  • uniapp在app模式下组件传值
  • 浅谈:基于三维场景的视频融合方法
  • Ceph 中Crush 算法的理解
  • HAproxy 详解
  • C++中的栈(Stack)和堆(Heap)
  • R语言机器学习算法实战系列(二) SVM算法(Support Vector Machine)
  • ChatGPT 在国内使用的方法
  • 论文阅读 - SELF-REFINE: Iterative Refinement with Self-Feedback
  • 了解二八定律,提高工作效率、生活质量
  • Maven笔记(二):进阶使用
  • 国产Linux:OpenEuler溯源
  • 初级前端面试
  • 【RabbitMQ】⾼级特性
  • 关于有源蜂鸣器及无源蜂鸣器的区别及驱动各类单片机案例
  • 华为---代理ARP工作过程示例分析
  • 使用ultralytics库微调 YOLO World 保持 Zero-Shot 能力
  • Go小专栏 第一期
  • 【前端】ES6:Promise对象和Generator函数
  • 【MySQL 01】数据库基础
  • 配置docker的proxy指向
  • 【Proteus仿真】基于51单片机的L298N电机电速调节
  • 记录动态库项目仅生成了dll,未生成lib文件的问题
  • 深度学习02-pytorch-07-张量的拼接操作
  • 剖析Spark Shuffle原理(图文详解)
  • go 以太坊代币查余额