轉貼:google搜尋原理論文1

banq發表於2005-12-28
這篇文章中,我們介紹了google,它是一個大型的搜尋引擎(of a large-scale search engine)的原型搜尋引擎在超文字中應用廣泛。Google的設計能夠高效地抓網頁並建立索引,它的查詢結果比其它現有系統都高明。這個原型的全文和超連線的資料庫至少包含24‘000‘000個網頁。我們可以從http://google.stanford.edu/ 下載。

設計搜尋引擎是一項富有挑戰性的工作。搜尋引擎為上億個網頁建立索引,其中包含大量迥然不同的詞彙。而且每天要回答成千上萬個查詢。在網路中,儘管大型搜尋引擎非常重要,但是學術界卻很少研究它。此外由於技術的快速發展和網頁的大量增加,現在建立一個搜尋引擎和三年前完全不同。

本文詳細介紹了我們的大型搜尋引擎,據我們所知,在公開發表的論文中,這是第一篇描述地如此詳細。除了把傳統資料搜尋技術應用到如此大量級網頁中所遇到的問題,還有許多新的技術挑戰,包括應用超文字中的附加資訊改進搜尋結果。本文將解決這個問題,描述如何運用超文字中的附加資訊,建立一個大型實用系統。任何人都可以在網上隨意釋出資訊,如何有效地處理這些無組織的超文字集合,也是本文要關注的問題。

關鍵詞 World Wide Web,搜尋引擎,資訊檢索,PageRank, Google

1 緒論 Web 給資訊檢索帶來了新的挑戰。

Web上的資訊量快速增長,同時不斷有毫無經驗的新使用者來體驗Web這門藝術。人們喜歡用超級連結來網上衝浪,通常都以象Yahoo這樣重要的網頁或搜尋引擎開始。大家認為List(目錄)有效地包含了大家感興趣的主題,但是它具有主觀性,建立和維護的代價高,升級慢,不能包括所有深奧的主題。基於關鍵詞的自動搜尋引擎通常返回太多的低質量的匹配。使問題更遭的是,一些廣告為了贏得人們的關注想方設法誤導自動搜尋引擎。

我們建立了一個大型搜尋引擎解決了現有系統中的很多問題。應用超文字結構,大大提高了查詢質量。我們的系統命名為google,取名自googol的通俗拼法,即10的100次方,這和我們的目標建立一個大型搜尋引擎不謀而合。

1.1網路搜尋引擎―升級換代(scaling up):1994-2000 搜尋引擎技術不得不快速升級(scale dramatically)跟上成倍增長的web數量。1994年,第一個Web搜尋引擎,World Wide Web Worm(WWWW)可以檢索到110,000個網頁和Web的檔案。到1994年11月,頂級的搜尋引擎聲稱可以檢索到2‘000’000(WebCrawler)至100‘000’000個網路檔案(來自 Search Engine Watch)。可以預見到2000年,可檢索到的網頁將超過1‘000’000‘000。同時,搜尋引擎的訪問量也會以驚人的速度增長。在1997年的三四月份,World Wide Web Worm 平均每天收到1500個查詢。

在1997年11月,Altavista 聲稱它每天要處理大約20’000’000個查詢。隨著網路使用者的增長,到2000年,自動搜尋引擎每天將處理上億個查詢。我們系統的設計目標要解決許多問題,包括質量和可升級性,引入升級搜尋引擎技術(scaling search engine technology),把它升級到如此大量的資料上。

1.2 Google:跟上Web的步伐(Scaling with the Web)建立一個能夠和當今web規模相適應的搜尋引擎會面臨許多挑戰。抓網頁技術必須足夠快,才能跟上網頁變化的速度(keep them up to date)。儲存索引和文件的空間必須足夠大。索引系統必須能夠有效地處理上千億的資料。處理查詢必須快,達到每秒能處理成百上千個查詢(hundreds to thousands per second.)。隨著Web的不斷增長,這些任務變得越來越艱鉅。然而硬體的執行效率和成本也在快速增長,可以部分抵消這些困難。
還有幾個值得注意的因素,如磁碟的尋道時間(disk seek time),作業系統的效率(operating system robustness)。在設計Google的過程中,我們既考慮了Web的增長速度,又考慮了技術的更新。Google的設計能夠很好的升級處理海量資料集。它能夠有效地利用儲存空間來儲存索引。最佳化的資料結構能夠快速有效地存取(參考4.2節)。進一步,我們希望,相對於所抓取的文字檔案和HTML網頁的數量而言,儲存和建立索引的代價儘可能的小(參考附錄B)。對於象Google這樣的集中式系統,採取這些措施得到了令人滿意的系統可升級性(scaling properties)。

1. 3設計目標
1.3.1提高搜尋質量我們的主要目標是提高Web搜尋引擎的質量。1994年,有人認為建立全搜尋索引(a complete search index)可以使查詢任何資料都變得容易。根據Best of the Web 1994 -- Navigators ,“最好的導航服務可以使在Web上搜尋任何資訊都很容易(當時所有的資料都可以被登入)”。然而1997年的Web就迥然不同。近來搜尋引擎的使用者已經證實索引的完整性不是評價搜尋質量的唯一標準。使用者感興趣的搜尋結果往往湮沒在“垃圾結果Junk result”中。實際上,到1997年11月為止,四大商業搜尋引擎中只有一個能夠找到它自己(搜尋自己名字時返回的前十個結果中有它自己)。導致這一問題的主要原因是文件的索引數目增加了好幾個數量級,但是使用者能夠看的文件數卻沒有增加。使用者仍然只希望看前面幾十個搜尋結果。因此,當集合增大時,我們就需要工具使結果精確(在返回的前幾十個結果中,有關文件的數量)。由於是從成千上萬個有點相關的文件中選出幾十個,實際上,相關的概念就是指最好的文件。高精確非常重要,甚至以響應(系統能夠返回的有關文件的總數)為代價。令人高興的是利用超文字連結提供的資訊有助於改進搜尋和其它應用 。尤其是連結結構和連結文字,為相關性的判斷和高質量的過濾提供了大量的資訊。Google既利用了連結結構又用到了anchor文字(見2.1和2.2節)。

1.3.2搜尋引擎的學術研究隨著時間的流逝,除了發展迅速,Web越來越商業化。1993年,只有1.5%的Web服務是來自.com域名。到1997年,超過了60%。同時,搜尋引擎從學術領域走進商業。到現在大多數搜尋引擎被公司所有,很少技公開術細節。這就導致搜尋引擎技術很大程度上仍然是暗箱操作,並傾向做廣告(見附錄A)。Google的主要目標是推動學術領域在此方面的發展,和對它的瞭解。另一個設計目標是給大家一個實用的系統。應用對我們來說非常重要,因為現代網路系統中存在大量的有用資料(us because we think some of the most interesting research will involve leveraging the vast amount of usage data that is available from modern web systems)。例如,每天有幾千萬個研究。然而,得到這些資料卻非常困難,主要因為它們沒有商業價值。我們最後的設計目標是建立一個體繫結構能夠支援新的關於海量Web資料的研究。為了支援新研究,Google以壓縮的形式儲存了實際所抓到的文件。設計google的目標之一就是要建立一個環境使其他研究者能夠很快進入這個領域,處理海量Web資料,得到滿意的結果,而透過其它方法卻很難得到結果。系統在短時間內被建立起來,已經有幾篇論文用到了Google建的資料庫,更多的在起步中。我們的另一個目標是建立一個宇宙空間實驗室似的環境,在這裡研究者甚至學生都可以對我們的海量Web資料設計或做一些實驗。

2. 系統特點 Google搜尋引擎有兩個重要特點,有助於得到高精度的搜尋結果。


第一點,應用Web的連結結構計算每個網頁的Rank值,稱為PageRank,將在98頁詳細描述它。
第二點,Google利用超連結改進搜尋結果。

2.1 PageRank:給網頁排序 Web的引用(連結)圖是重要的資源,卻被當今的搜尋引擎很大程度上忽視了。我們建立了一個包含518‘000’000個超連結的圖,它是一個具有重要意義的樣本。這些圖能夠快速地計算網頁的PageRank值,它是一個客觀的標準,較好的符合人們心目中對一個網頁重要程度的評價,建立的基礎是透過引用判斷重要性。因此在web中,PageRank能夠最佳化關鍵詞查詢的結果。對於大多數的主題,在網頁標題查詢中用PageRank最佳化簡單文字匹配,我們得到了令人驚歎的結果(從http://google.stanford.edu 可以得到演示)。對於Google主系統中的全文搜尋,PageRank也幫了不少忙。

2.1.1計算PageRank 文獻檢索中的引用理論用到Web中,引用網頁的連結數,一定程度上反映了該網頁的重要性和質量。PageRank發展了這種思想,網頁間的連結是不平等的。

PageRank定義如下: 我們假設T1…Tn指向網頁A(例如,被引用)。引數d是制動因子,使結果在0,1之間。通常d等於0.85。在下一節將詳細介紹d。C(A)定義為網頁A指向其它網頁的連結數,網頁A的PageRank值由下式給出: PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn)) 注意PageRank的形式,分佈到各個網頁中,因此所有網頁的PageRank和是1。 PageRank或PR(A)可以用簡單的迭代演算法計算,相應規格化Web連結矩陣的主特徵向量。中等規模的網站計算26‘000’000網頁的PageRank值要花費幾小時。還有一些技術細節超出了本文論述的範圍。

2.1.2直覺判斷 PageRank被看作使用者行為的模型。我們假設網上衝浪是隨機的,不斷點選連結,從不返回,最終煩了,另外隨機選一個網頁重新開始衝浪。隨機訪問一個網頁的可能性就是它的PageRank值。制動因子d是隨機訪問一個網頁煩了的可能性,隨機另選一個網頁。對單個網頁或一組網頁,一個重要的變數加入到制動因子d中。這允許個人可以故意地誤導系統,以得到較高的PageRank值。我們還有其它的PageRank演算法,見98頁。

另外的直覺判斷是一個網頁有很多網頁指向它,或者一些PageRank值高的網頁指向它,則這個網頁很重要。直覺地,在Web中,一個網頁被很多網頁引用,那麼這個網頁值得一看。一個網頁被象Yahoo這樣重要的主頁引用即使一次,也值得一看。如果一個網頁的質量不高,或者是死連結,象Yahoo這樣的主頁不會鏈向它。PageRank處理了這兩方面因素,並透過網路連結遞迴地傳遞。

2.2連結描述文字(Anchor Text)我們的搜尋引擎對連結文字進行了特殊的處理。大多數搜尋引擎把連結文字和它所鏈向的網頁(the page that the link is on)聯絡起來。另外,把它和連結所指向的網頁聯絡起來。這有幾點好處。

第一,通常連結描述文字比網頁本身更精確地描述該網頁。

第二,連結描述文字可能鏈向的文件不能被文字搜尋引擎檢索到,例如影像,程式和資料庫。有可能使返回的網頁不能被抓到。注意哪些抓不到的網頁將會帶來一些問題。在返回給使用者前檢測不了它們的有效性。這種情況搜尋引擎可能返回一個根本不存在的網頁,但是有超級連結指向它。然而這種結果可以被挑出來的,所以此類的問題很少發生。連結描述文字是對被鏈向網頁的宣傳,這個思想被用在World Wide Web Worm 中,主要因為它有助於搜尋非文字資訊,能夠用少量的已下載文件擴大搜尋範圍。我們大量應用連結描述文字,因為它有助於提高搜尋結果的質量。有效地利用連結描述文字技術上存在一些困難,因為必須處理大量的資料。現在我們能抓到24‘000’000個網頁,已經檢索到259‘000’000多個連結描述文字。

2.3其它特點除了PageRank和應用連結描述文字外,Google還有一些其它特點。

第一,所有hit都有位置資訊,所以它可以在搜尋中廣泛應用鄰近性(proximity)。

第二,Google跟蹤一些視覺化外表細節,例如字號。黑體大號字比其它文字更重要。

第三,知識庫儲存了原始的全文html網頁。 3有關工作 Web檢索研究的歷史簡短。World Wide Web Worm()是最早的搜尋引擎之一。後來出現了一些用於學術研究的搜尋引擎,現在它們中的大多數被上市公司擁有。與Web的增長和搜尋引擎的重要性相比,有關當今搜尋引擎技術的優秀論文相當少。根據Michael Mauldin(Lycos Inc的首席科學家)) ,“各種各樣的服務(包括Lycos)非常關注這些資料庫的細節。”雖然在搜尋引擎的某些特點上做了大量工作。具有代表性的工作有,對現有商業搜尋引擎的結果進行傳遞,或建立小型的個性化的搜尋引擎。最後有關資訊檢索系統的研究很多,尤其在有組織機構集合(well controlled collections)方面。在下面兩節,我們將討論在資訊檢索系統中的哪些領域需要改進以便更好的工作在Web上。

相關文章