美文网首页
分布式搜索 - 大白话告诉你倒排索引是个啥

分布式搜索 - 大白话告诉你倒排索引是个啥

作者: 风间影月 | 来源:发表于2023-08-01 12:13 被阅读0次

这个问题是近段时间被问的最多的,理清思路就更好理解了,下面贴出来,也配合表格辅助理解。

其实很多搜索引擎都是基于倒排索引,比如luncene,solr以及elasticsearch�

正排索引

聊倒排搜索之前先来看看正排索引,正排其实就是数据库表,他通过id和数据进行关联,如下:

[图片上传失败...(image-c3ad8c-1690871925538)]

我们可以通过搜索id,来获得相应的数据,也能删除数据。你买了一本书,书的目录其实也是正排搜索。

假设现在我要搜苹果俩字,那么他会对这张表格中每一行的数据做匹配,去查找一下,是否包含苹果这两个字,从第一条匹配到最后一条,如果一张表中数据量不多,几万,十几万,那么问题不大,但是一旦数据量有上百万,上千万,那么全表扫描这种的搜索性能就会有影响。

其次,这个时候我想搜索苹果iPhone,那么我们无法把这词汇拆开再到数据库去搜索。

  • 优点:使用起来方便,原理也简单,比较入门,典型的数据库检索方式
  • 缺点:检索效率低下,适合简单场景使用,比如传统项目,数据量较小的项目。不支持分词搜索。

倒排索引

与正排相比是反着来的,他会把文档内容进行分词,比如“苹果公司发布iPhone”是一个文档数据,当我们把他存入到搜索引擎中去的时候,会有一个文档id,这个文档id就类似于数据库主键。但是这文档存储的时候和数据库不一样,他会进行一个分词,参照上面的表格,分词后的结果如下:

[图片上传失败...(image-215548-1690871925538)]

每一个词汇都会和文档id关联起来,可以根据词汇来找到所有出现的id列表,如下:

[图片上传失败...(image-b3fbca-1690871925538)]

假设现在我要搜索iPhone,如果是数据库搜索,假设有1亿条数据,那么会匹配1亿次,全表扫描。最后再把数据返回出来。

如果是搜索引擎,那么有可能第一次就把所有文档数据给查出来,当然也有可能是第N次,当然他肯定要比数据库的搜索效率更高。如图中位置,他会直接把1001,1003两个文档返回。

可能会有同学会问,数据库和搜索引擎都是1000万数据,搜索的词汇在搜索引擎中正好是第1000万条,那么会不会慢,其实这个肯定会比数据库更快,数据库要匹配是一个文本中的内容和关键词匹配,而搜索引擎是直接把关键字做匹配,效率肯定后者更快。

  • 优点:搜索更快,耗时短,用户体验高,精准度也高
  • 缺点:维护成本高,索引新建后要修改,必须先删除,前期需要很好地规划

相关文章

  • 搜索引擎索引-倒排索引

    倒排索引基础 倒排索引示范 Elasticsearch中使用一种称为倒排索引的结构,适用于快速的全文搜索。一个倒排...

  • 复习下elasticSearch

    elasticSearch: 一个分布式全文搜索数据引擎,底层基于Lucene(倒排索引)。 特点:速度快,存储数...

  • Elasticsearch之映射与分析

    倒排索引 Elasticsearch 使用一种称为 倒排索引 的结构,它适用于快速的全文搜索。一个倒排索引由文档中...

  • MapReduce算法模式-倒排索引模式

    一、倒排索引 倒排索引,是一种为了提高搜索效率而创建的索引,是一种数据结构。在搜索索引中输入关键词,然后让搜索引擎...

  • Lucene、Elasticsearch、Kibana 入门教程

    信息检索模型 信息检索模型最重要的概念就是倒排索引,倒排索引是搜索引擎中常见的索引方法,用来存储在全文搜索下某个单...

  • 设计数据持久层(下):案例介绍

    搜索引擎 搜索数据的存储该怎么设计呢? 倒排索引 (Inverted Index) “倒排”,指的是存储的结构不再...

  • 倒排索引原理简析

      倒排索引是一种源于搜索引擎中根据关键字对文档进行搜索的技术,lucene就是基于倒排索引实现的。这种索引表中的...

  • 999 - Elasticsearch Analysis 01

    简介 Analysis在创建索引或搜索时指定,将文本解析成倒排索引,以供搜索。简单解释下倒排索引:通常书本的目录就...

  • Elasticsearch使用

    一、搜索引擎基础 搜索引擎是倒排索引,Elasticsearch必须成为索引才支持查询搜索引擎两大组件:搜索组件:...

  • Elasticsearch之分片内部原理

    使文本可被搜索 最好的支持 一个字段多个值 需求的数据结构是我们在 倒排索引 章节中介绍过的 倒排索引 。 倒排索...

网友评论

      本文标题:分布式搜索 - 大白话告诉你倒排索引是个啥

      本文链接:https://www.haomeiwen.com/subject/mfvepdtx.html