查找——线性索引查找

来源:互联网 发布:手机网络助手下载 编辑:程序博客网 时间:2024/05/20 05:09

索引的定义

一本书的内容通常是无序的,如果没有目录,要想快速找到某一张,则需要将一本书按顺序翻过去,这是非常耗时的。计算机的索引跟图书目录类似,它记录了关键词和数据的位置。索引按照结构可以分为线性索引、树形索引、多级索引。实际上他们的命名是根据索引数据结构来区分的,线性索引是指索引项集合组织为线性结构。常用的线性索引有:稠密索引、分块索引、倒排序索引。

稠密索引

稠密索引是指每一条数据都有一个索引和其对应,这个索引记录了关键词和指针,并且该索引是排序的。稠密索引的查找非常快,但遗憾的是,因为为每一条记录都创建了索引,所以维护这个索引需要大量的内容空间以及性能。

分块索引

分块索引类似于图书馆的书架,每一个书架放了某个编号范围的图书。分块索引有以下几个特点:

  • 块内无序
  • 块间有序
  • 每个块拥有一个最大关键码
  • 存储了块的记录个数
  • 拥有指向块首数据的指针

倒排索引

假如有N篇文章:
A.i am a good boy.
B.i love eat beef.
…….
假设这两篇文章非常长,如果我们要搜索good这个单词在哪篇文章里,正常情况下,我们要遍历所有的文章,并且找出结果,这样做的话,搜索的范围就会非常大。
倒排索引给了我们优化解决的方法,它先创建一个排好序的关键词表,关键词表对应的是文章列表地址。然后解析每一篇文章,如果含有某一个关键词,就将该文章的地址加入到关键词表对应的搜索结果里去。通过这种方式,我们只需要先找到关键词,然后再找到关键词对应的文章列表,再遍历这个列表就能找到这篇文章。如果我们只查找一次,肯定不划算的,通常情况下,这种技术用在查找频繁的搜索引擎中。

原创粉丝点击