[课程设计] Medrank高维近似最近邻查询算法

项目简介:

以B+树为索引的基于随机投影技术的高维近似最近邻查询

(1)   关于c-ANN:




(2)   关于Medrank:



(3) 关于数据集:



阶段简介:



B+树节点:


B+树草图:








几个问题:

1.为什么不用哈希索引?

哈希索引与B树索引检索的原理:

hash相当于把key通过hash函数计算,得到key的hash值,再用这个hash值做指针,查找hash表中是否存在key,如果存在就返回 key所对应的value,选定一个好的hash函数很重要,好的hash函数可以使计算出的hash值分布均匀,降低冲突,只有冲突减小了,才会降低 hash表的查找时间。

b-tree完全基于key的比较,和二叉树相同的道理,相当于建个排序后的数据集,使用二分法查找算法,实际上也非常快,而且受数据量增长影响非常小。

比较:Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。但是,Hash索引仅仅能满足”=”,”IN”和”<=>”查询,不能使用范围查询

2.其他高维最近邻查询算法:

位置敏感的哈希LSH:相似数据高概率哈希到相同的冲突桶,不相似的数据几乎不被哈希到相同的桶中;对于查询,用一组相同的哈希函数把查询哈希到桶空间,把冲突桶数据对象作为最近邻候选。

相似性查询:把数据对象转成二进制编码,在海明空间内进行距离计算






项目源码:https://github.com/cajet/SYSU_DB/tree/master/src/homework%203



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章