2013-12-23 87 views
0

我是一名中學生學習計算機編程,我只是對Google和雅虎等搜索引擎有一些疑問。搜索引擎組件

據我所知,這些搜索引擎包括:

  1. 搜索算法&代碼 (例如:search.py​​文件接受來自Web界面的搜索查詢並返回搜索結果)

  2. Web界面的用於查詢和表示結果

  3. 網絡爬蟲

我感到困惑的是Web爬蟲部分。

谷歌和雅虎的網絡爬蟲是否立即搜索WWW上存在的每個網頁?或者他們: 首先下載WWW上的所有現有網頁,將它們保存在其巨大的服務器上,然後搜索這些保存的頁面?

如果後者是這樣的話,那麼谷歌搜索結果上顯示的搜索結果就不會過時,因爲我猜想通過WWW上的所有網頁搜索將花費大量的時間?

PS。還有一個問題:其實......一個網絡爬蟲如何檢索WWW上存在的所有網頁?例如,它是否搜索所有可能的網址,如www.a.com,www.b.com,www.c.com等...? (雖然我知道這不可能是真的)

或者有什麼方法可以訪問所有在萬維網上的現有網頁? (對不起,問這樣一個愚蠢的問題..)

謝謝!

+0

你的意思是,每次有人搜索任何東西在Google上,它是否實時搜索每個現有網頁上的術語?簡單地說,不。 (僅在Google上,每天就有超過十億次搜索,搜索數十億個網站,沒有硬件可以提出這麼多請求,也沒有網站可以處理這種負載,而且肯定無法將結果返回給如果它不得不等待網站每次返回它們的內容,則需要一秒的時間。) – JJJ

回答

1

爬蟲搜索頁面,下載它們並保存(部分)以供日後處理。所以是的,你說得對,搜索引擎返回的結果可能很容易過時。而幾年前,他們真的很過時。只有在最近谷歌和其他人開始通過與大型內容提供商(如Twitter)合作,直接和頻繁地從他們那裏獲取數據,纔開始進行更多的實時搜索,但他們在2011年7月再次離線實時搜索。否則,他們會注意到通常網頁會發生變化,所以他們知道哪些網頁比其他網頁更頻繁地爬行。他們有專門的系統,比如Caffeine web indexing system。另見他們的博文Giving you fresher, more recent search results

那麼什麼情況是:

  • 爬行檢索頁面
  • 後端服務器處理它們
    • 解析的文字,記號化了,指數也全文搜索
    • 提取鏈接
    • 提取物元數據,如架構。組織了豐富網頁摘要
  • 後來他們根據所提取的數據附加計算,如
    • 頁排序計算
  • 與此同時,他們可以做很多其他的東西,如
    • 實體提取知識圖信息

發現要抓取的頁面只需從頁面開始,然後通過其他頁面的鏈接跟隨其鏈接等等。除此之外,他們還有其他方式來學習新的網站 - 例如,如果人們使用他們的公共DNS服務器,他們將瞭解他們訪問的頁面。在G +,Twitter等上共享鏈接。

無法知道所有現有網頁是什麼。可能有一些從任何地方都沒有鏈接,沒有人公開分享鏈接(並且不使用他們的DNS等),因此他們無法知道這些網頁是什麼。然後是Deep Web的問題。希望這可以幫助。

抓取並不是一件容易的事情(例如雅虎現在通過微軟的Bing外包抓取)。你可以閱讀更多關於它在頁面的和布林的自己的論文:The Anatomy of a Large-Scale Hypertextual Web Search Engine

更多關於存儲,架構等方面的細節,你可以找到例如高可擴展性網站:http://highscalability.com/google-architecture

+1

我只想補充一點,通常,這個「後期處理」在網絡爬蟲正在運行時仍在發生。 搜索引擎可能會按順序執行這些步驟,但大多數搜索引擎支持並行插入/查詢操作。 – bdean20

+0

是的,那會更現實。 –