復雜的1秒 圖解Google搜索技術
谷歌(Google),一個非常成功,但又十分神秘,而且帶有幾分理想化色彩的互聯網搜索巨人,它還是一家相當了不起的廣告公司,谷歌首頁上的那個搜索按鈕是其年贏利200億美元的殺手級應用,也是Internet首屈一指的商業和技術神話。近日國外一家網站(PPCblog)精心繪制了一張谷歌搜索流程圖,這張流程圖展示了每天擁有3億次點擊量的Google搜索按鈕背后搜索引擎在那不到1秒的響應時間內所進行的處理。
在你點擊了Google搜索按鈕之后到看到結果這不足1秒鐘的時間內,它做了什么?互聯網上的內容如何被谷歌找到?什么樣的內容會被收錄?想必大家一定都想知道谷歌搜索按鈕背后的秘密吧。別急,開始之前我們先來看一下神秘的谷歌數據中心。
谷歌自家設計服務器
谷歌的數據中心高度機密,我們所能得到的信息十分有限。我們先來看幾個數據:谷歌在美國本土的數據中心有19個以上,另有17個分布在美國以外的世界各地;每個數據中心有50萬平方英尺(46450平方米),建造一個數據中心要花費約6億美元;谷歌的數據中心是世界上最高效的設施之一,非常環保;數據中心使用50-100兆瓦的電力,考慮到冷卻問題,通常建在便于用水的地方;谷歌的服務器被安置在標準的海運集裝箱中,每個集裝箱可容納1160臺服務器。關于谷歌的數據中心,我們就只知道這么多了。
圖1 谷歌自家設計的服務器
圖2服務器自備電池
谷歌擁有的數十萬臺服務器都是自己設計的,它們認為這是公司的核心技術之一。每臺服務器都配有一顆12伏電池,確保萬一主電源斷電時還可持續供電。
至于為什么為每臺服務器配備電池,谷歌的回答是成本。一般數據中心多依賴UPS(不間斷電源系統),這基本上算是大電池,會在主電力失效而發電機還來不及啟動時暫時協助供電。而谷歌認為直接把電力內建到服務器更便宜,而且成本能直接跟服務器數量相符合,如此便不會浪費多余的容量。另一個原因是效率,大型UPS可達92-95%的效率,這意味著許多電力還是被浪費掉了,但谷歌采用的內建電池作法效率超過99.9%。
圖3 谷歌的服務器被安裝在集裝箱中,每個集裝箱容納1160臺
圖4工作中的谷歌員工
谷歌如何找到并收錄你上傳的內容?
圖5發生在用戶搜索之前
谷歌使用它的"爬蟲"工具在一刻不停地周游互聯網世界的每一個角落。上圖中間的6個步驟依次描繪了從內容出現在互聯網上到內容被收錄進谷歌的數據庫供用戶檢索這一過程,其中第2、3、5步又有許多分支,所有這些都是為了建立一個信息"集匯池",這是第一個階段的工作,第二個階段才是從這個"池"中為用戶篩選他們所需要的內容。接下來我們一步步看谷歌是如何搜集并整合信息的。
1、網友上傳內容,比如博客、微博或其它類型的WEB內容被更新到網上。
2、Google的"爬蟲"發現了這一更新。在這一步,谷歌加入了許多判斷機制,主要包括以下幾點:
2.1、Google的"爬蟲"沿著鏈接路徑(URL)周游互聯網,但如果沒有URL指向某一站點,則這一站點將不會被索引。
2.2、如果你在robots.txt中設置了不許索引(部分或全部),Google的"爬蟲"將不會抓取你站點上的相應內容。
2.3、如果指向你站點的連接上有nofollow標簽,Google的"爬蟲"將不會從這些URL路徑來到你的站點。如下圖:
網頁原代碼中的nofollow標簽
URL就像是Google"爬蟲"周游互聯網時的路標,谷歌當然希望收錄有價值的網頁,所以必須采取一種機制分辨哪些URL是垃圾信息,nofollow標簽正是谷歌所倡導的方法之一。網站的合法更新人員幾乎不會上傳垃圾URL,但它們往往大量出現在評論跟帖和論壇中,就像上圖中的例子,這些URL對于谷歌來講是沒有意義的,為了防止"爬蟲"經由這些URL到達某一站點,在源代碼中它們都會自動被加上nofollow標簽。
2.4、Google也能通過blog軟件或xml站點地圖找到你的網站。
2.5、從權威性越高的網站鏈接到你網站的URL越多,你的網站的權威性也就越高,但Google"爬蟲"始終會忽略被加上了nofollow標簽的URL。
上面這幾點大概就是谷歌在收錄信息時對內容提出的"準入"要求,看來在一些開放的地方(比如論壇)大量發布URL以求讓谷歌關注,這一小伎倆是沒有什么效果的。以上是信息被谷歌收錄之前所發生的事,一旦信息被谷歌收錄了會發生什么呢?請往下看:
圖8信息"素材"的存儲
3、信息被谷歌收錄之后當然也要進行加工處理,主要包括兩個步驟,一是信息"素材"的存儲,二是對收錄的信息按要求進行優化,上圖描繪了"素材"的存儲方式,主要包括兩部分:網頁標題和鏈接數據被保存在一個索引中,用于廣度優先搜索(可見文章標題是多么的重要,做編輯的一定要有駕馭標題黨的覺悟);網頁內容保存在另一個索引中,以用于檢索頻率不高的長尾、個性化、深度優先搜索。
此時可能你已經明白了,當你用谷歌搜索時,你并沒有在檢索時時更新的互聯網,而是在檢索谷歌的緩存,只是谷歌更新的速度非常快,以讓其緩存盡量與互聯網上的內容同步。
圖9優化已收錄的信息
4、谷歌基于URL評估域名和網頁的總體權威性。
5、檢查網頁以防止作弊行為,包括以下幾點:
5.1、谷歌的搜索質量和反垃圾信息審查。
5.2、1萬多遠程測試用戶評價搜索結果的質量。
5.3、谷歌征請用戶對有PageRank訛詐嫌疑的垃圾信息進行舉報。
5.4、谷歌根據數字千年版權法(DMCA)去除盜版內容。
6、在對頁面進行分析之后,每個頁面都被附加上很多用于輔助用戶搜索的數據片。
從信息出現在互聯網上到被谷歌收錄,然后谷歌對這些數據進行分析優化,至此,一個實時更新的互聯網信息"集匯池"就建立起來了,可以說谷歌存儲著整個互聯網的快照。以上就是我們在按谷歌搜索按鈕之前它所做的事情,接下來我們看一下谷歌如何響應用戶的搜索請求,另外谷歌的廣告是如何來到我們面前的,不要忘記,谷歌可是靠廣告營生的。
只要有人用谷歌的服務它就能從中賺錢,就怕像安卓(Android)手機系統那樣,有些流氓廠家把安卓裝在了自己的智能手機中,但是把其上谷歌的各種服務全部抹掉,改用自己的服務,這樣谷歌當然不干了,所以安卓一更新,這些流氓手機廠家就緊張。
谷歌如何幫助用戶進行搜索?
圖10從用戶開始檢索到生成初步結果
從用戶開始檢索到生成初步結果(這時的結果并不會直接呈現給用戶),經歷了4個步驟:
1、用戶發出搜索請求。谷歌搜索質量工程師PatrickRiley說:在大多數搜索中,你的搜索處于多個并行的控制過程或谷歌實驗室的創新項目組過程中,可以說每一個查詢請求都會參與一些谷歌的創意實驗。我們都是小白鼠?
2、谷歌會對用戶輸入的關鍵詞提供一些建議。
3、谷歌會用同義詞匹配與你的搜索關鍵詞語義相近的查詢結果。
4、生成初步的查詢結果,雖然谷歌宣稱可以找到成千上萬的相關結果,但一般只顯示不到1000條,同時查詢結果將被進行本地化處理,本土站點在查詢結果中優先出現。
搜索結果將如何被優化?
1、對查詢結果按權威性和PageRank進行排序,重復的查詢結果被剔除。此時的查詢結果已接近最終形態,在這一基礎上,有兩個進程將分開進行--查詢結果優化和為其匹配相應的廣告。我們先來看查詢結果優化。
圖11對查詢結果進行過濾處理
2、對查詢結果進行過濾處理。包括以下幾點:
2.1、對通常的查詢,谷歌會把相關的專題性垂直搜索結果(比如新聞、購物、視頻、書籍、地圖等)也加到返回的查詢結果中。
2.2、個性化,用戶訪問過的網站在查詢結果列表中會更靠上
2.3、大量使用錨點的網站有可能被從查詢結果中刪除
2.4、如果網頁被其他高PageRank的網站引用,則網頁的重要性會大大提高。
2.5、趨勢分析:對搜索流量爆增或有大量新聞的搜索關鍵詞,谷歌會在新的查詢結果中增加額外的PageRank權值。
2.6、同一個域名下的多個網頁如果具有相同的PageRank會被歸為一組。
2.7、查詢結果最終形成(將與廣告一同顯示)
搜索結果與廣告
圖12 用戶所搜索的內容如何與廣告相結合?
1、Google根據關鍵詞、廣告類型、用戶所處位置找出相關的被競價拍賣的關鍵詞廣告
1.1、關鍵詞廣告必須遵守當地法律條文。廣告業主的非法廣告將被取締,如果關鍵詞的搜索流量過低或關鍵詞廣告點擊量偏低,則會被自動禁用,出于商業策略,像亞馬遜這樣的客戶會給予優惠折扣。
1.2、關鍵詞相關廣告按收益潛力排序。
1.3、對廣告業主來說廣告內容一般是固定的,但有時使用動態關鍵詞使關鍵詞廣告與搜索關鍵詞相關度更高。一些廣告允許增加附屬信息,比如網站鏈接、電話號碼、產品鏈接、地址等。
1.4、如果廣告擁有相當高的點擊率,則會顯示在搜索結果列表的上方,以使其更顯眼。
1.5、其余的廣告依序顯示在頁面右側
經過上述一系列復雜的信息處理過程,最終返回給用戶的是一個個性化的、具備地理位置特征的、布局簡潔的查詢結果頁面,當然還精確匹配了廣告,所有這些步驟在總共不到1秒的時間內完成,每天3億次的點擊量給Google帶來了超過200億美元的年收入
關于精確廣告匹配的小例子,請看下圖:
圖13思科路由器的廣告北京搜索結果
圖14思科路由器的廣告廣州搜索結果
海芯博業的廣告下面標注了北京市三個字,可見這是一個地區性的廣告推廣,在廣州搜索結果中不可見。
谷歌官方對其搜索技術的敘述
我們搜索技術的后端軟件會在服務器側觸發一系列執行時間不到1秒的并行計算,谷歌問世前的傳統搜索引擎的搜索結果嚴重依賴于關鍵詞在頁面上出現的頻度,我們使用了200多個指標信號(其中包括我們擁有專利的PageRank頁面等級加權算法)用來檢查萬維網的鏈接結構并決定網頁的重要程度。
我們假定一個網頁的重要程度取決于別的頁面對它的引用,就像學術論文中的引用指數一樣,重要的論文總是會被很多其他論文引用。然后我們再根據搜索條件進行超文本匹配分析(對"爬蟲"抓取的頁面內容進行關鍵詞倒排索引檢索)確定跟搜索請求最相關的網頁。綜合最重要的網頁和跟搜索請求最相關的網頁兩個方面,我們就能按重要程度和用戶搜索請求相關程度把查詢結果排序后呈現給我們的用戶。
附:Googlegraphic原圖。