數學之美:簡單之美 布爾代數和搜索引擎的索引

布爾代數:數據庫

一個搜索引擎要作如下幾件事:自動下載儘量多的網頁、創建有效的索引、根據相關性對網頁進行公平正確的排序(下載、索引、排序)。其中索引是爲基礎。服務器

布爾代數就是在數字電路上經常使用的邏輯運算。在剛開始布爾提出布爾代數時,沒有什麼像樣的應用。直到香農在其碩士論文中提出使用布爾代數實現數字電路的開關,才使得布爾代數成爲數字電路的基礎。布爾代數很簡單,主要包含「與、或、非」操做。搜索引擎

在文獻檢索過程當中,能夠根據用戶的輸入的關鍵詞是否包含在每篇文章中來判斷文章與關鍵詞的相關性。這樣經過布爾代數的與或非運算就能找出文章。布爾運算我將咱們從連續狀態轉換爲離散狀態。.net

索引:blog

搜索引擎要在極快的時間內搜索成千上萬甚至幾億的搜索結果,這就須要特殊的技巧:建索引。以圖書館爲例,進圖書館找書,並非去存書櫃上一本一本的找,而是根據電腦搜索結果,先去幾樓幾號房間、而後第幾排書櫃、再按照代號查找。現代信息檢索基於數據庫,數據庫的查詢語句支持複雜的邏輯組合,其背後原理仍是基於布爾運算。排序

最簡單的索引結構,就是爲關鍵字創建一個很長的二進制數字,數字的每一位表明這篇文獻是否包含該關鍵詞。當咱們須要同時包含兩個關鍵字的文章時,只須要將這兩個關鍵字的二進制索引進行與操做。注意計算機作布爾運算是很是快的。此試,搜索引擎的索引就是一張大表,每一行表明一個關鍵詞的二進制數字。因爲大部分位置的值都爲0,所以只須要記住那些值爲1的位置就好了。索引

隨着用戶產生的內容愈來愈多,數據量愈來愈大。根據網頁的重要性、質量和訪問頻率創建經常使用和不經常使用等不一樣級別的索引。經常使用的更新快、訪問速度快、附加信息多。從而下降服務器壓力。get