搜索引擎技術內幕之索引

搜索引擎中索引的好壞直接影響着搜索引擎的性能,最終影響到用戶的體驗,可見索引的重要性。

今天我們就來談談索引技術。談到索引大家第一想到的是倒排索引,的確倒排在全文檢索中的優勢,在搜索引擎中的大量使用令它聲名鵲起。所以在此就以倒排進行分析。但是除了倒排索引外還有很多的索引方式,如靜態索引方式有:位圖、簽名文件、倒排等;動態索引有:B樹、B+樹等等。

搜索引擎之所以大量使用倒排作爲它內部的索引結構,本人覺得主要有兩個原因:

1、容易實現、存儲簡單,更重要的一點是方便進行rank排序,當然還包括倒排列表可以壓縮。像位圖和簽名文件就沒有rank排序和壓縮的優勢。

2、方便查詢結果處理,很容易實現布爾計算。現今的主流搜索引擎用的本質計算都屬於布爾計算。如要查詢包含A和B的文檔,其實質是先找出包含A的文檔列表,再找出包含B的文檔列表,最後把那些既在列表A又在列表B的文檔作爲結果返回。其實質就是進行一個合取查詢操作。

 

下面就以簡單的程序方式來說明到排索引(基於內存的索引)的原理:

 

說明:

 1、索引必須要有一個字典存在,字典就是一些術語的集合.如dog、cat、hotel、beijing .....索引引擎中的字典一般來自公共知識庫,商場、娛樂新聞、電影簡報等等。

2、索引以索引文件的形式存在磁盤上,在使用的時候加載進內存,或者部分加載進內存,大多數情況下內存不夠存放所有的索引,所以有時候索引會進行壓縮存儲,字典文件和倒排列表都有相應的壓縮方式。如字典中常用的壓縮有前綴壓縮、最小完美hash、基於磁盤的字典等;到排列表壓縮有:一元編碼等

3、這裏給出的索引方式爲基於內存的索引,在索引數據量大時不適用。當然這裏把它放在內存是沒問題,畢竟才一篇文章,文章的每一行作爲一個文檔對待。

4、真正的搜索引擎當到索引這一步時所有的數據都已經就緒,關鍵詞的抽取(extract)、術語的權重等等。

 

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