1、布爾代數和搜索引擎html
搜索引擎是天天都在使用的一種工具,它是一門很是複雜的技術,實現一個搜索引擎並不是易事。可是,技術是分爲術和道兩種的,具體的作事方法是術,作事的原理和原則是道。面試
不談搜索引擎的術,但能夠說說它的道。算法
搜索引擎的原理相對於它在技術上的實現,就很是簡單了。創建一個搜索引擎大體須要作這幾件事:自動下載儘量多的網頁;創建快速有效的索引;根據相關性對網頁進行公平準確的排序。工具
一、布爾代數網站
布 爾代數起源於二進制。中國的陰陽學說是二進制的雛形,而二進制做爲一個計數系統,是在公元前2-5世紀由印度學者完成的。17世紀,萊布尼茲完善了二進制 計數系統,並用0和1表示它的兩個數字,成爲咱們今天使用的二進制。1854年,布爾(英國19世紀的一名中學數學教師)的《思惟規律》一書向向人們展現 瞭如何用數學的方法解決邏輯問題。搜索引擎
布爾代數運算的元素只有兩個:1(true,真)和0(false,假),基本運算規則有與(and)、或(or)、非(not)三種。那麼布爾代數和搜索有什麼關係嗎?spa
無 論是Google仍是百度,其搜索的基本原理都是基於布爾代數的。假設搜索一篇關於原子能應用的文獻,但並不像知道如何造原子彈。對於用戶輸入的每一個人關 鍵字,搜素引擎要判斷文獻中是否包含這個關鍵字,如有,則給此篇文獻一個邏輯值—真(1或true),反之給一個邏輯值假—(0或false),對應的查 詢語句就變成了「原子能and應用and(not 原子彈)」,則搜索結果中符合要求的文獻必須同時知足這三個要求。根據布爾代數的運算規則,每一篇文獻對於這三個條件都有一個true或者false的答 案,根據這個答案就能算出文獻是不是知足要求的。htm
二、索引排序
搜索引擎能夠根據布爾代數去尋找須要的結果,可是,它是怎麼在零點零幾秒的時間內找到成千上萬的搜索結果的?顯然,若是是掃描文本,計算機掃描速度再快也不能作到。這就須要創建索引了。索引
Google 曾經有一道面試PM的考題:如何向你的奶奶解釋搜索引擎?若是從技術層面回答,基本被pass。好的回答是拿圖書館的索引卡片類比。每一個網站就如圖書館的 一本書,網頁就是書本的某一頁的內容,咱們能夠利用索引卡片或者頁碼迅速找到須要的書本或者書本某一頁的信息。
一 個簡單的索引結構是用一個很長的二進制數表示某個關鍵字是否出如今每篇文獻中,有多少篇文獻,就有多少位數,每一位對應一篇文獻,1表明有對應的關鍵 字,0表明沒有。對於關鍵字」原子能「,其可能的二進制表示是0100100011000001…..,」應用」可能對應的二進制表示是 0010100110000001…,對兩者進行布爾運算AND。結果是0000100000000001…,表示第五篇和第十六篇知足要求。計算機作布 爾運算是很是快的,如今最便宜的微機在一個指令週期內作32位布爾運算,一秒鐘能夠進行數十億次以上。
2、網頁排名技術
對於不部分查詢,搜素引擎都會返回成千上萬條結果,那麼應該如何排序,把用戶最想看到的結果排在前面呢?這個問題很大程度上取決於搜索引擎的質量。對於一個特定的查詢,搜索結果的排名取決於兩組信息:網頁質量和這個查詢與每一個網頁的相關信息性。
一、網頁質量:PageRank
PR 的數學模型是Google的創始人拉里佩奇和謝爾蓋布林發明的。在互聯網上,若是一個網頁被不少其它網頁所連接,說明它收到廣泛的認可和信賴,那麼它的排 名就高。這是PR的核心思想。友情連接的交換就很好的說明了這一點。對於不一樣網頁的連接,PR是區別對待的:即網頁排名高的網站貢獻的連接權重大。那麼網 頁權重怎麼計算的呢?
有x一、x二、x三、x4四個網頁只想網頁Y,四個網頁對應的權重分別是0.00一、0.0一、0.0二、0.05,則網頁Y的PR=0.001+0.01+0.02+0.05=0.081。PR算法的計算就是線性代數中矩陣相乘。
二、網頁和查詢的相關性
度 量網頁和查詢的相關性,一個簡單的方法就是用關鍵詞在網頁中出現的總詞頻。例如,一個查詢中包含N個關鍵字w1,w2,w3…,他們在一個特定網頁中出現 的詞頻分別是TF1,TF2,TF3…,(TF:Term Frequency的縮寫)那麼,查詢和這個網頁的相關性就是
TF1+TF2+TF3+…
但 是對於對肯定網頁主題沒有用處的詞,稱之爲中止詞,如的、是、中、地等,其權重爲0。因此在信息檢索中,使用最多的權重是」逆文本頻率指數」 (Inverse Document Frequency,縮寫爲IDF),數學公式是log(D/Dw)(w是下標),D表示所有的網頁數。假設中文網頁數D=10億,中止詞‘的」在全部網 頁中出現,其出現的次數Dw=10億,那麼它的IDF=log(10億/10億)=log(1)=0。「原子能」在200萬個網頁中出現,即Dw=200 萬,因此它的權重IDF=log(500)=8.96,」應用「在5億個網頁中出現,則它的IDF=log(2)=1。利用IDF,相關行的計算公式就由 詞頻的簡單求和變成了加權求和,即:
TF1*IDF1+TF2*IDF2+TF3*IDF3+…
利用這種方式計算出來的權重比例分配就很客觀了,準確的估算關鍵字和網頁之間的相關性了。
參考書籍:《數學之美》