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