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

文章目录

前言

上一章,简单介绍了 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

相关推荐
java1234_小锋3 小时前
Elasticsearch是如何实现Master选举的?
大数据·elasticsearch·搜索引擎
梦幻通灵9 小时前
ES分词环境实战
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客9 小时前
Elasticsearch 中的热点以及如何使用 AutoOps 解决它们
大数据·运维·elasticsearch·搜索引擎·全文检索
小黑屋说YYDS14 小时前
ElasticSearch7.x入门教程之索引概念和基础操作(三)
elasticsearch
Java 第一深情16 小时前
Linux上安装单机版ElasticSearch6.8.1
linux·elasticsearch·全文检索
KevinAha1 天前
Elasticsearch 6.8 分析器
elasticsearch
wuxingge1 天前
elasticsearch7.10.2集群部署带认证
运维·elasticsearch
Elastic 中国社区官方博客2 天前
Elasticsearch:如何部署文本嵌入模型并将其用于语义搜索
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
Dreams°1232 天前
【大数据测试 Elasticsearch 的标准--超详细篇】
大数据·elasticsearch·jenkins
鸠摩智首席音效师2 天前
如何在 Elasticsearch 中配置 SSL / TLS ?
elasticsearch·ssl