倒排索引详细解析

本文深入探讨了倒排索引的核心概念,包括索引的作用、B+树结构在大数据检索中的局限性、全文检索的基本概念,以及倒排索引的详细结构——term index和term dictionary。Roaring Bitmaps作为快速查找的关键技术被提及,同时概述了倒排索引的整体数据结构图和查询逻辑。
摘要由CSDN通过智能技术生成

一、核心概念

1、索引是什么?

索引的作用是辅助快速检索数据,不同的索引形式(B\B+\倒排索引),实际上
就是数据结构不同,最终索引的落地形式还是文件,也就是不同的数据结构的文件数据,
就是不同的索引,适用于不同的场景。

2、B+树结构的索引能解决大数据检索的问题吗?

	(1)、一般全文检索,检索的是文本,文本数据一般是比较大的,如果B+树的节点存储的是文本,那么会造成一个磁盘块存储不了多少数据,
		最终造成B+树的深度增大.IO次数变多,搜索效率就会很慢。

	(2)、B+树结构无法解决模糊检索的要求,用mysql里面的模糊匹配,很容易会造成全表扫描,搜索精准度差。

3、全文检索基本概念:

	在数据存入的时候,索引系统扫描设定的字段,对字段进行分词处理,对分词项创建索引,索引指明数据的唯一标识/当前词项在文档中出现的频率和位置。
	在查询数据的时候,根据查询的文本,对文本进行分词处理,然后去匹配索引,根据索引找到数据的唯一标识,最后通过唯一标识找出对应的数据。

4、倒排索引的结构

(1)、term index:

词项字典的索引,存在于内存中(磁盘中也会存在一份,后缀为.tip),实际上就是包含trem词项前缀的树形结构。根据term index可以快速定位到
某个offset(某个节点分支上)。通过Term Index 找到对应的Term Dictionary的 block(磁盘块),然后再去磁盘直接找到term,减少磁盘的随机读写次数,大大的提升查询效率。

term index的数据结构是FST(有限状态转换),实际上就是第一次插入数据的时候,根据分词形成一条连接线
后面再插入的时候,与前一个分词进行最大前缀匹配,发现没有匹配就直接插入,
发现可以匹配,就在最大匹配的分词节点上开辟一个分支,后面的分词就是另外一条连接路径。

FST的优点就在于压缩率好
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值