[課程設計] 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



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