搜尋引擎的背後——支撐這一“簡單”的背後,是非常複雜的搜尋技術。
人們進一步的問題是:搜尋引擎公司到底是什麼樣的公司,搜尋引擎的員工在做什麼? 搜尋引擎公司的盈利模式是什麼,它們的盈利空間究竟有多大?新的搜尋引擎公司能像百度、Google一樣成功嗎?搜尋引擎公司相互之間如何競爭?搜尋引擎現在發展到了一個什麼樣的階段,明天搜尋引擎有什麼用處……
開啟Google或百度首頁,鍵入想要搜尋的任何一個詞語,不到10秒的時間裡,瀏覽器頁面裡就嘩啦啦給你吐出一大堆搜尋結果。“百度一下”某個關鍵詞,一個“搜尋”的操作,簡單到使用者認為這是互連網天生就應該具備的功能。
但是,搜尋引擎的背後——支撐這一“簡單”的背後,是非常複雜的搜尋技術。
眾所周知,我們生活在資訊大爆炸時代,每天的資訊量太大了,足以將所有人湮沒。在如此龐雜的新鮮資訊與存量資訊面前,人們如何找到斯時有用或急需的資訊,那,請搜尋吧。搜尋引擎如此應運而生。
那麼,什麼是搜尋引擎?曾有人形象地比喻說:“搜尋引擎就像一個巨大的吸塵器,能將互連網海洋的任何東西都吸上來,不管它在多深的海底。”這句解釋儘管並不準確,但比較形象,我們來看看真實的搜尋引擎工作是怎樣一個流程吧。
蜘蛛程式
實際上,搜尋引擎捕捉網頁並不是“吸”,而是“抓”——抓取。還是繼續以海洋作為互連網的形象代表吧。這個海洋,是以不計其數的網頁組成的,而網頁間,靠一個個連結相連,形成一個寬廣無垠的互聯“網”。
搜尋引擎“抓取”網頁的工具,人們叫它蜘蛛程式(SpiderPro-gram),它沿著網頁的連結,從一個網頁爬到另一個網頁,並有選擇地將一個個網頁抓取回來。
我們知道,每一個互連網頁面,都是用html語言寫成的。“蜘蛛程式”訪問的並不是我們日常看到的頁面,而是背景html源碼,如果“蜘蛛”認為這個頁面有用,它就會將關於這個頁面的html源碼複製下來,發送回搜尋引擎的伺服器進行儲存,然後繼續它的旅程,去訪問下一個頁面。
從理論上來說,從一個頁面出發,根據該頁面的連結資訊,這個蜘蛛可以訪遍互連網上所有的網頁——就好像你認識一個人,你可以根據這個人認識的人,和這個人認識的人所認識的人,一直和這個世界上所有的人建立某種關係。“蜘蛛程式”的工作原理也是這樣的。
不同的搜尋引擎,它們所擁有的“蜘蛛程式”不一樣,蜘蛛的能力大小也不一樣。比如,每天能抓到網頁的數量是一個指標,避免抓重複網頁的能力是一個指標,如何抓到最新網頁的能力也是一個指標。因此,“蜘蛛”能力的大小,首先就會導致不同搜尋引擎之間的差異。
建立索引和排序
蜘蛛程式固然重要,但這還不是各搜尋引擎的核心差異,其核心差異還是在於搜尋引擎對抓取回來的頁面所進行索引和設定定序。
抓回來的頁面來源程式放在搜尋引擎龐大的伺服器群中,就好像是成千上萬本書散落在一個巨大的圖書館中,如果不對這些書進行索引和排序,要找到一本書就跟大海撈針的難度是一樣的。索引就是要對每個頁面中的每個字詞都進行分析、整理和提煉,將每個頁面分門別類地放在各個索引庫中。
顯然,如果依靠人工肯定不能對每個頁面的字詞都進行詳細的分析,這個過程也是通過程式來完成的。這中間分詞技術就很關鍵,比如,分詞技術直接影響到搜尋引擎會不會根據“任務”這樣一個詞,來建立包含“李主任務必來開會”字樣的網頁索引(早期的搜尋引擎,包括Google在內,就曾經出現過鍵入“任務”一詞,搜出包含“李主任務必來開會”網頁的事情)。
索引之後就是排序,即確定使用者向搜尋引擎提交了一個搜尋請求後,搜尋引擎應該向使用者返回搜尋結果的秩序。顯然,使用者最想要的資訊應該排在搜尋結果的最前列,但究竟什麼樣的資訊是使用者最想要的資訊?這個問題就仁者見仁,智者見智了。
在搜尋引擎領域,著名的定序是百度創始人李彥宏的“超鏈分析”(李在美國申請了相關技術的專利)。超鏈分析認為一個網頁的重要性可由其他網頁指向該網頁的連結數目決定,這有點像要判斷一個人是否重要,就看這個世界有多少其他人認識他。與超鏈分析定序類似,Google也採用根據網頁被連結指向多少的規則來進行排序,創造了自己獨特的PageRank技術。
可以說,正是由於掌握了網頁索引和定序方面的核心技術,才造就了目前Google和百度在各自市場上各領風騷的局面。
反作弊
將互連網有用的網頁抓取回來,並根據定序建立了網頁索引,使用者在使用搜尋引擎進行檢索時,就可以以極快的速度找到相關性高的網頁了。然而道高一尺,魔高一丈,如果單純依靠靜態蜘蛛程式抓取規則和定序,一些惡意的網站就可以利用這些規則,來進行所謂的網站最佳化。《南方周末》曾經在《搜尋引擎與作弊網站的戰爭》一文中詳細介紹了這方面的情況。
從上面的介紹可以看出,搜尋引擎絕不是僅僅執行簡單的“吸塵器”功能,它首先需要功能強大的“蜘蛛”來協助其收集互連網規模日增、每天變化的各種網頁資訊,同時需要極大的投入,購買伺服器來將這些資訊儲存起來。接著,搜尋引擎要對所有收集來的網頁建立索引和排序,並時刻警惕外界的各種作弊行為。
通過這樣的搜尋引擎工作流程,我們也可以看到運作一個好的搜尋引擎所需要的資源:“蜘蛛程式”,“分詞技術”、“定序”和“反作弊程式”,這些需要大量的程式員不停工作,來提升軟體的效率和功用;海量網頁資訊和索引資訊的儲存,需要企業投入大量財力,來部署伺服器群。目前,Google在全球投入搜尋引擎技術開發的技術人員上千人,研究全球100多種語言的搜尋技術,而百度目前700多的員工規模中,接近一半以上的技術人員,研究單一的中文搜尋技術。
由於搜尋引擎產業的複雜性,在資源投入的基礎上,“專註”也是一個很重要的因素。“我們將一如既往,專註在中文搜尋引擎領域的研發和推廣上。”已經成為企業家明星的百度公司總裁李彥宏曾經公開表示。
瞭解了搜尋引擎的技術核心,我們不難理解為什麼“全、新、快、准”四個字會成為衡量搜尋引擎好壞的標準。“全”是指索引庫中搜集的網頁要全,根據最新的統計數字,在差不多20億中文網頁中,百度索引庫中搜集了8億,而Google的數字是5億;“新”就是要保證一些最新的網頁能被收錄在索引庫中,目前百度的索引庫每月會完整更新一遍,但每天會多次更新,每次更新一部分最新網頁;“快” 就是指查詢提交後搜尋引擎返還結果的速度,“准”指的是搜尋結果的相關性和準確度。
技術層面上瞭解了搜尋引擎之後,人們才能更清楚地進一步瞭解搜尋引擎如何盈利、為什麼市場對搜尋引擎公司如此青睞。