1、頁面抓取需要快而全面
我們知道,互聯(lián)網(wǎng)是一個動態(tài)的內(nèi)容更新,每天都會有很多人在互聯(lián)網(wǎng)上發(fā)布新內(nèi)容,或者更新老內(nèi)容,搜索引擎就是要從這些海量的信息中抓取最符合用戶搜索意圖的網(wǎng)頁,面對已經(jīng)存在的海量信息而且每秒鐘還在幾何級增長的信息量,搜索引擎的工作量是非常大的,搜索引擎程序每更新一次程序要花許多時間的,特別是在剛誕生的時候,更新的周期有時候竟然能達到幾個月更新一次,試想一下,在幾月內(nèi)又會有多少網(wǎng)頁更新和新產(chǎn)生了呢?這樣的搜索結果往往是滯后的。要想返回最好的搜索結果,搜索蜘蛛必須抓取盡量比較全面的網(wǎng)頁,這就需要搜索引擎解決許多技術上的問題。也是它面臨的主要挑戰(zhàn)。
2、海量存儲數(shù)據(jù)
互聯(lián)網(wǎng)上的信息是巨大的,大的幾乎你不能想像,而且每天還會有許多新的信息產(chǎn)生,搜索引擎再抓取了這些頁面后,還必須以一定的數(shù)據(jù)格式存儲起來,數(shù)據(jù)結構要求合理,而且要具備非常高的擴展性。數(shù)據(jù)寫入速度要很快,訪問的速度也經(jīng)足夠快。搜索引擎除了要存儲大量的頁面本身信息外,為了更好的進行索引及排序,還必須要存儲頁面與頁面之間的鏈接關系,頁面的歷史數(shù)據(jù),以及許多索引信息。這些數(shù)據(jù)量都是非常巨大的。這樣大規(guī)模的數(shù)據(jù)存儲和讀取肯定存在很多技術方面的挑戰(zhàn)。
3、索引處理快速有效,而且要有可擴展性
搜索引擎將頁面數(shù)據(jù)抓取和存儲后,還要進行許多頁面的索引處理。例如頁面之間鏈接關系的計算,正向索引、反向索引等。例如還有谷歌的PR計算等,搜索引擎必須進行大量的索引工作才能快速的返回搜索結果,而且進行索引的過程中,還有大量的新頁面在產(chǎn)生,搜索引擎的索引處理程序還要有比較好的擴展性。
4、查詢處理快速準確
前邊那幾步都是在搜索引擎的后臺程序運行的,而查詢階段是用戶能夠看到結果的一個步驟。我們在搜索引擎的搜索框中輸入關鍵詞點擊搜索后,往往不到一秒鐘時間搜索引擎就能夠返回結果給我們,雖然表面看起來簡單,可是對于搜索引擎來說,卻是一個非常復雜的過程。里邊牽涉很多算法。它需要在不到一秒的時間內(nèi)快速從符合基本條件的網(wǎng)頁中找到合理的頁面,排名在搜索引擎的前邊。我們知道,百度是最多我們可以看到76頁的結果,谷歌要多一點,可以看到最多100頁的結果。