搜尋引擎中索引的好壞直接影響著搜尋引擎的效能,最終影響到使用者的體驗,可見索引的重要性。
今天我們就來談談索引技術。談到索引大家第一想到的是倒排索引,的確倒排在全文檢索中的優勢,在搜尋引擎中的大量使用令它聲名鵲起。所以在此就以倒排進行分析。但是除了倒排索引外還有很多的索引方式,如靜態索引方式有:位圖、簽名檔案、倒排等;動態索引有:b樹、b+樹等等。
搜尋引擎之所以大量使用倒排作為它內部的索引結構,本人覺得主要有兩個原因:
1、容易實現、儲存簡單,更重要的一點是方便進行rank排序,當然還包括倒排列表可以壓縮。像點陣圖和簽名檔案就沒有rank排序和壓縮的優勢。
2、方便查詢結果處理,很容易實現布林計算。現今的主流搜尋引擎用的本質計算都屬於布林計算。如要查詢包含a和b的文件,其實質是先找出包含a的文件列表,再找出包含b的文件列表,最後把那些既在列表a又在列表b的文件作為結果返回。其實質就是進行乙個合取查詢操作。
下面就以簡單的程式方式來說明到排索引(基於記憶體的索引)的原理:
說明:1、索引必須要有乙個字典存在,字典就是一些術語的集合.如dog、cat、hotel、beijing .....索引引擎中的字典一般來自公共知識庫,商場、娛樂新聞、電影演示文稿等等。
2、索引以索引檔案的形式存在磁碟上,在使用的時候載入進記憶體,或者部分載入進記憶體,大多數情況下記憶體不夠存放所有的索引,所以有時候索引會進行壓縮儲存,字典檔案和倒排列表都有相應的壓縮方式。如字典中常用的壓縮有字首壓縮、最小完美hash、基於磁碟的字典等;到排列表壓縮有:一元編碼等
3、這裡給出的索引方式為基於記憶體的索引,在索引資料量大時不適用。當然這裡把它放在記憶體是沒問題,畢竟才一篇文章,文章的每一行作為乙個文件對待。
搜尋引擎索引之索引基礎
本文節選自 這就是搜尋引擎 核心技術詳解 第三章 本節通過引入簡單例項,介紹與搜尋引擎索引有關的一些基礎概念,了解這些基礎概念對於後續深入了解索引的工作機制非常重要。3.1.1單詞 文件矩陣 單詞 文件矩陣是表達兩者之間所具有的一種包含關係的概念模型,圖3 1展示了其含義。圖3 1的每列代表乙個文件...
搜尋引擎索引之索引基礎
本文節選自 這就是搜尋引擎 核心技術詳解 第三章 本節通過引入簡單例項,介紹與搜尋引擎索引有關的一些基礎概念,了解這些基礎概念對於後續深入了解索引的工作機制非常重要。3.1.1單詞 文件矩陣 單詞 文件矩陣是表達兩者之間所具有的一種包含關係的概念模型,圖3 1展示了其含義。圖3 1的每列代表乙個文件...
搜尋引擎 索引
正排索引 文件編號,單詞編號,單詞的數量,單詞出現的位置。倒排索引 1,單詞詞典,儲存單詞以及統計資訊,單詞在記錄表中的便宜,可常駐記憶體,用雜湊表儲存。2,記錄表,單詞對應的文件集合,記錄單詞出現的數目 位置。文件採用差分變長編碼。其中文件可按編號公升序排列 可利用差分編碼 也可按出現次數排列,可...