搜索引擎的整個工作過程包括三個部分:
1、抓取
搜索引擎為想要抓取互聯網站的頁面,不可能手動去完成,那麽百度,google的工程師就編寫了壹個程序,他們給這個自動抓取的程序起了壹個名字,蜘蛛(也可以叫做“機器人”或者“網絡爬蟲”)。
互聯網上的信息存儲在無數個服務器上,任何搜索引擎要想回答用戶的搜索,首先要把網頁存在自己本地的服務器上,這靠的就是網絡爬蟲。它不停的向各種網站發送請求,將所得到的網頁存儲起來。
通常的做法是利用網頁之間的鏈接從壹個網頁出發,提取出指向其他頁面的鏈接,把它們當成將下次要請求的對象,不停重復這個過程。有很多細節要被考慮。比如避免循環鏈接的網頁;解析網頁文檔,提取裏邊的鏈接;當鏈接無法打開時對錯誤進行處理等。
2、索引
索引就是幫助程序進行快速查找的。大家都用過英漢詞典。字典前邊的按照單詞首字母排列的部分就是索引。搜索引擎也壹樣。這裏要介紹第壹個最重要的數據結構:反轉列表。
搜索引擎所擁有的文檔中出現的每壹個單詞都擁有壹個反轉列表。它記錄了這個單詞在多少文檔中出現,分別是哪些文檔,每個文檔分部出現多少次,分別出現在什麽位置等信息。這樣當搜索相關單詞時,Google就不用遍歷所有的文檔,只需要查找每個單詞對應的反轉列表就可以知道這個詞在哪裏出現了。
每壹個網絡文檔不僅只有文本信息。它還可能包括文件名,引用等部分。為了提高搜索質量,搜索引擎需要對文檔的不同部分分別處理,構造反轉列表。每壹部分的單詞都要被加入到這個詞屬於此部分的反轉列表裏。
3、搜索
有了索引,就可以快速找到所需內容了。前邊說過搜索引擎根據用戶的信息需求查找匹配的內容。信息需求來自於用戶輸入。搜索引擎用把用戶輸入的搜索字符進行壹些類似於創建索引時對文本的處理,然後生成解析樹。總之,以上技巧最終目標是幫助搜索引擎更好理解用戶的信息需求,以便查找出更高質量的文檔。
4、排序
用戶輸入的關鍵詞,就可以查看到相關的內容了。這個時候,就會壹條壹條的展示,那誰排在第壹,誰排在第二,我們把這種結果的排序,稱為排名。
排名會是很復雜的,系統會對其進行壹系列復雜的分析,並根據分析的結論在索引庫中尋找與之最為匹配的壹系列網頁,按照用戶輸入的關鍵詞所體現的需求強弱和網頁的優劣進行打分,並按照最終的分數進行排列。