ES 的倒排索引 和数据库概念的对标

本文介绍了正排索引与倒排索引的区别,重点讲解了倒排索引在全文检索中的应用,包括其在提高搜索效果和性能方面的优势,以及在搜索引擎如Elasticsearch中的对应概念,如Document、field和mapping等。
摘要由CSDN通过智能技术生成

倒排索引

说到倒排索引 之前先说一下什么叫做正排索引

正排索引:是以文档对象的唯一 ID 作为索引,以文档内容作为记录的结构。

一。什么是倒排索引

搜索的核心需求是全文检索,全文检索简单来说就是要在大量文档中找到包含某个单词出现的位置,在传统关系型数据库中,数据检索只能通过 like 来实现,例如需要在酒店数据中查询名称包含公寓的酒店,需要通过如下 sql 实现:

无法使用数据库索引,需要全表扫描,性能差

搜索效果差,只能首尾位模糊匹配,无法实现复杂的搜索需求

无法得到文档与搜索条件的相关性

在百度里面搜索倒排索引,结果字写错了,写成了倒拍索引

在百度里面搜索倒排索引,结果写成了倒拍索引。但是百度好像挺智能的,知道我们要搜索的是倒排索引,搜索出来的页面都是倒排索引相关的知识,而且在海量的网页中进行搜索的时候,速度也是特别迅速的。我想这个搜索后端使用的技术肯定不会是like的。而且可以做到复杂的模糊查询,可以得到文档与搜索条件的相关性。这些功能都是基于倒排索引技术来实现的,或许百度的后面使用的技术更加复杂,在这个的基础上进行了优化与扩展。

搜索的核心目标实际上是保证搜索的效果和性能,为了高效的实现全文检索,我们可以通过倒排索引来解决。

倒排索引步骤

1、对搜索的内容进行分词

首先要对字段的内容进行分词,分词就是将一段连续的文本按照语义拆分为多个单词,这里两个文档包含的关键词有:苏州街、维亚大厦…

2、生成倒排索引:

然后按照单词来作为索引,对应的文档 id 建立一个链表,就能构成上述的倒排索引结构。

有了倒排索引,能快速、灵活地实现各类搜索需求。整个搜索过程中我们不需要做任何文本的模糊匹配。

二.

es 相关概念对比sql index 对标 table 索引 ,就是文档的集合,类似数据库的表

Document 对标 Row 文档,就是一条条数据,类似数据库中的行。文档的内容都是json格式;

field 对标 column 字段,就是json文档中的字段,类似数据库中的列。

mapping 对标 schema 映射,是索引引用中文档的约束。例如字段类型的约束,类书数据库里的表结构

DSL 对标 SQL DSL是elasticsearch提供的json风格的i请求语句,用来操作rlasticearch 实现crud

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值