讀《搜索引擎技術基礎》


爲了更深入的瞭解與應用爬蟲,花了一些時間讀了清華大學和百度聯合出版的《搜索引擎技術基礎》。一直沒有整理過這種專業性或技術類別的書,是因爲涉及到的內容太多,不懂得也太多,根本整理不出來不如直接看書。但是對於這本書來說,本着瞭解的態度看,自然沒有深究其中的某些晦澀的內容。下面以寫下來的方式貫穿下自己的閱讀所得。


整本書基本也是從搜索引擎的系統架構展開,講述各個部分內容,在最後也涉及到了一些很有意思的垃圾網頁識別技術等。

1.搜索引擎系統架構。



其中的關係:數據抓取獲得文本和連接信息(也就是從網頁中抽取的文本內容與網頁中存在的鏈接),文本信息交給內容索引系統部分,鏈接交給鏈接分析系統部分。而查詢作爲人機交互部分利用上面兩個子系統提供的信息檢索出用戶需求內容。

2.數據抓取子系統。

(1)典型的搜索引擎抓取環架構


(2)在搜索引擎和網站之間的robots協議,其內容是網站根目錄下的/robots.txt文件。主要語法一般是User_Agent和Disallow兩項。
(3)異步I/O與同步I/O
同步I/O:在發送請求後阻塞,直到請求被響應,在等待過程中不消耗CPU資源,可以配合多進程/線程使用。性能低。
異步I/O:相對同步,請求後不等待響應,向下執行。響應通過狀態通知或者回調方式通知調用者。
(4)爬蟲抓取方式:累積式(時間段中不斷抓取)與增量式(在一定網頁基礎上,以更新數據形式對網頁集合中的過時網頁重新抓取)。
(5)抓取優先級:廣度優先(採用)、深度優先。
(6)鏈接去重方式:hash和Bloom Filter。由於鏈接數據量大,所以要考慮時間和空間特性。而後者在存儲上通常只用hash方式的1/4或者1/8即可。
(7)網頁存儲技術。兩種:分佈式hash存儲系統和基於BigTable的網頁存儲系統。
前者和數據庫方式相比更簡單、高效,支持key-value的查詢方式。後者基於分佈式文件系統上(GFS,HDFS),常見的有Google bigtable(c++),HBase(java)(apache)。

3.內容索引系統。

和其它部分關係:在數據抓取子系統中已經使用某種方式將爬取到的網頁存儲,但是爲了檢索子系統能夠高效的檢索到數據,需對數據進行有效的“組織”,這就是索引系統的作用,主要方式是正排和倒排索引。

4.鏈接分析系統。

使用網頁之間的鏈接關係(使用數組表示)分析網頁質量與擴展文檔描述。page rank算法。

5.數據檢索子系統。

瞭解檢索者的意圖,根據內容索引系統和鏈接分析系統獲得檢索結果。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章