當前位置:
首頁 > 知識 > 面試必問Elasticsearch倒排索引原理

面試必問Elasticsearch倒排索引原理

倒排索引是目前搜索引擎公司對搜索引擎最常用的存儲方式,也是搜索引擎的核心內容,在搜索引擎的實際應用中,有時需要按照關鍵字的某些值查找記錄,所以是按照關鍵字建立索引,這個索引就被稱為倒排索引。

首先你要明確,索引這東西,一般是用於提高查詢效率的。舉個最簡單的例子,已知有5個文本文件,需要我們去查某個單詞位於哪個文本文件中,最直觀的做法就是挨個載入每個文本文件中的單詞到內存中,然後用for循環遍歷一遍數組,直到找到這個單詞。這種做法就是正向索引的思路。

正向索引的這種查詢效率也不需要我多吐槽了。倒排索引的思路其實也並不難。再舉一個例子,有兩段文本

D1:Hello, conan!

D2:Hello, hattori!

第一步,找到所有的單詞

Hello、conan、hattori

第二步,找到包含這些單詞的文本位置

Hello(D1,D2)

conan(D1)

hattori(D2)

我們將單詞作為Hash表的Key,將所在的文本位置作為Hash表的Value保存起來。

當我們要查詢某個單詞的所在位置時,只需要根據這張Hash表就可以迅速的找到目標文檔。

結合之前的說的正向索引,不難發現。正向索引是通過文檔去查找單詞,反向索引則是通過單詞去查找文檔。

倒排索引的優點還包括在處理複雜的多關鍵字查詢時,可在倒排表中先完成查詢的並、交等邏輯運算,得到結果後再對記錄進行存取,這樣把對文檔的查詢轉換為地址集合的運算,從而提高查找速度。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒JAVA開發學院 的精彩文章:

Linux生產環境上,最常用的一套「vim「技巧
五個你可能不了解的killall選項

TAG:千鋒JAVA開發學院 |