倒排索引關鍵點普及

倒排索引

倒排索引是什麼?爲什麼es、hbase、doris、starrocks都有倒排索引?

倒排索引(英文:Inverted Index),是一種索引方法,常被用於全文檢索系統中的一種單詞文檔映射結構。現代搜索引擎絕大多數的索引都是基於倒排索引來進行構建的,這源於在實際應用當中,用戶在使用搜索引擎查找信息時往往只輸入信息中的某個屬性關鍵字,如一些用戶不記得歌名,會輸入歌詞來查找歌名;輸入某個節目內容片段來查找該節目等等。面對海量的信息數據,爲滿足用戶需求,順應信息時代快速獲取信息的趨勢,聰明的開發者們在進行搜索引擎開發時對這些信息數據進行逆向運算,研發了“關鍵詞——文檔”形式的一種映射結構,實現了通過了物品屬性信息對物品進行映射,可以幫助用戶快速定位到目標信息,極大地降低了信息獲取難度。倒排索引又叫反向索引,它是一種逆向思維運算,是現代信息檢索領域裏面最有效的一種索引結構。

倒排索引組成



倒排表:posting list : int有序數組,存儲匹配某個item的所有的id,使用roaring bitmaps,frame of reference壓縮算法,具體算法可以自行百度,

倒排索引 詞項字典term dictionary :

詞項索引 term index : 極大的節約內存,使用fst壓縮算法,最大可達20倍,,性能不如hashmap,但也很不錯



fst構建原理

使用fst算法將詞項字段和詞項索引存儲在內存中,由於壓縮倍率大,十億個詞項字典進行fst解析之後,存儲在內存中也就1G大小,fst是如何將詞項字典和詞項索引進行映射的呢? 由於所有英文,或者中文進行解析之後,最終都是有26個英文字母對應,由於fst算法能複用後綴和前綴,因此極大節約了結構樹的長度,使得最終存儲在內存中,相比普通tree存儲節省了內存。下圖所示:



 

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