ElasticSearch所使用的倒排索引的思想和使用場景

背景:

在關係數據庫系統裏,索引是檢索數據最有效率的方式,。但對於搜索引擎,它並不能滿足其特殊要求:
1)海量數據:搜索引擎面對的是海量數據,像Google,百度這樣大型的商業搜索引擎索引都是億級甚至百億級的網頁數量 ,面對如此海量數據 ,使得數據庫系統很難有效的管理。
2)數據操作簡單:搜索引擎使用的數據操作簡單 ,一般而言 ,只需要增、 刪、 改、 查幾個功能 ,而且數據都有特定的格式 ,可以針對這些應用設計出簡單高效的應用程序。而一般的數據庫系統則支持大而全的功能 ,同時損失了速度和空間。最後 ,搜索引擎面臨大量的用戶檢索需求 ,這要求搜索引擎在檢索程序的設計上要分秒必爭 ,儘可能的將大運算量的工作在索引建立時完成 ,使檢索運算儘量的少。一般的數據庫系統很難承受如此大量的用戶請求 ,而且在檢索響應時間和檢索併發度上都不及我們專門設計的索引系統

何爲倒排索引?

常見的正常索引

 

假設我們要通過id去查找content,我們會將ID做成索引,加快我們的查找

現在的問題是我們要去查到那些content中有b這兩個詞

首先想到的是依次去嘗試content中是否有b,顯然在時間複雜度上是很大的,尤其是數據庫中數量很多時

那麼如何去解決這個問題?

現在都需要引入倒排索引的思想


我們已content做成索引,這樣查找ID的時間就快很多

跟正向的索引比較,也就是做了一個倒置,這就是倒排索引的思想

倒序索引定義:

也常被稱爲反向索引、置入檔案或反向檔案,是一種索引方法,被用來存儲在全文搜索下某個單詞在一個文檔或者一組文檔中的存儲位置的映射


那麼使用場景有哪些?

1、全文搜索(搜索引擎)

在一組文檔中查找某一單詞所在文檔及位置

2、模糊匹配

通過用戶的輸入去匹配詞庫中符合條件的詞條

3、商品搜索

通過商品的關鍵字去數據源中查找符合條件的商品

 



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