数据结构与算法14:线性索引查找

数据结构与算法14:线性索引查找

    线性索引查找是在待查询序列比较大,或者不方便排序的情况下的一种措施,通过一个较小的索引来实现快速查找。比如汉语字典,我们需要先在前面的索引中找到这个字,然后再到后面去查找这个字的详细资料,那么前面的这个索引起到的作用就是这个作用了。线性索引查找在实际应用中有多种形式,适合不同的情况。

    1. 稠密索引

    稠密索引是最简单的,给每一个记录提取一个key,将key存储于一个表中,这个表是排序的,而记录则不必排序。这样需要查找时,我们先查找索引,使用二分查找可以快速定位,再根据得到的位置信息去提取实际的数据,要比直接查找好很多。当数据量很大并且在不断增加时,往往排序消耗的资源是非常大的。另外,记录会比较大,往往只能放在磁盘,而索引比记录小很多,这样可以整个放到内存里,只有在提取数据的时候才访问磁盘,大大减少了IO量。

    2. 分块索引    

    当数据量更大的时候,如果稠密索引的大小也超出了内存的容量,那么查找索引也会带来IO,效率就会大大降低了。分块索引的不同在于不需要对每一个记录记录索引,而是对记录进行分块。分块索引要求数据是分块有序的,也就是说,数据被分为很多块,每一块内部并没有排序,但是第n块中的每一个元素逗比第n+1块要小,这样虽然每一块是无序的,但块和块是有序的。维护这样的顺序关系要比对整个排序消耗得少很多。
    分块索引只需要记录每一块的信息,查找时先定位到某一块,然后到那个块里顺序查找。分块索引内记录的索引项包括这个块的最大值(或最小值)、位置信息等,可以包括块内元素个数等信息。

    3. 倒排索引

    倒排索引是搜索引擎的基本技术。倒排索引是指根据值来索引key,而不是根据key来索引值。倒排索引将每个句子拆分成多个关键词(每个句子是一条记录),而索引则是对拆分出来的关键词进行索引,查询每个关键词可以得到包含这个关键词的记录的key,然后根据这些key(一般会多于一个)可以得到包含了这个关键词的句子。当然搜索非常复杂,这只是其中的一丁点。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值