信息检索索引的结构

更新时间:02-10 教程 由 终止符 分享

信息检索索引的结构?

Hash:

跟集合的Hash差不多,是根据Hash算法计算的下标位置,可能出现哈希冲突;

查询精准快速,但不支持范围查询,范围查询就成了全文检索;

显然不适合数据库索引使用

适合场景:

等只查询的场景,就只有KV形式的情况,在Redis、Memcached一些NOSql的中间件;

有序数组:

​ 有序数组在范围查询和等值查询上很好;有序的适合静态数组,

​ 可以做来静态存储引擎,保存一些静态数据,不会变动的静态数据

​ 有序数组的缺点就是变换数据时会移动数据,改变数据结构;

​ 静态数组存放一些一般不会改变的数据也是不错的。

二叉树:

是有序的,可以支持范围查询;

时间复杂度是log(N),为了维持时间复杂度更新的复杂度也要一样,就成了完全平衡二叉树了;

但随着数据的增加,对于二叉树就会变的很高,查询消耗的时间就会很多。

B树:

数据结构是一个结点可以存储多个数据,相比二叉树就很矮,就会提高磁盘的IO效率,

B树不支持范围查询的快速查找,如果数据不在同一个磁盘上就需要从根节点进行多次遍历,查询效率有待提高。

如果data存储的是行记录,行的大小随着列数的增多,所占空间会变大。这时,一个页中可存储的数据量就会变少,树相应就会变高,磁盘IO次数就会变大。

B+树:

是B树的升级版,只在叶子结点存放数据,其他节点存放索引值,然后叶子结点再加上一个双向链表连接,方便了范围查询的效率。

B+树中的非叶子节点会冗余一份在叶子节点中,并且叶子节点之间用指针相连。

B+树一个结点为一页或者一页的倍数最好;

声明:关于《信息检索索引的结构》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2304879.html