1. 程式人生 > >百度為什麼不能實時收錄並索引最新內容?

百度為什麼不能實時收錄並索引最新內容?

 

大凡站長都會有這樣一個實際感受和經驗,即對有sitemap(站點索引地圖)的網站,Google很快就能將新內容索引,甚至快到幾分鐘!

而Baidu根本不可能做到這點。就算是大網站、更新快的網站,也要一段時間。具體沒有做過實驗,但根本無法和Google的幾分鐘內容就被索引相提並論!

為什麼會這樣?

今天我研究Sphinx搜尋引擎的時候,算是找到了點答案……

搜尋引擎Sphinx研究側記

在研究Sphinx時,採用4百萬級的資料做測試(http://www.17wen.com 一起問),生成1400MB文件,總耗時382秒(6分半,速度還算不錯)

雖然速度還行,但也不能增加點新內容就重建索引,所以Sphinx提供了增量索引的模式,即可將新增加的內容單獨索引,然後增量索引和主索引再合併……

但即便是這個模式,在增加1個增量所有的情況下,也需要120秒進行合併索引!!

所以最後的策略是,每天凌晨4點更新一次增量索引,每週重新建立主索引!這樣避免重複建立索引。但很明顯,這樣導致的結果就是,每天都新內容,必須是到下一天(凌晨4點後)才能被搜尋到!

Google的檔案體系

Google一直在宣傳他的分散式檔案系統,它是搜尋成千上萬臺分散式機器。雖然我不得知Google具體的演算法,但可以推測出,它的索引不是一個或者少量的分散式,而是基本並存的海量計算機上的串聯!所以很容易達到當臺機器上的實時(或準實時更新),也就是我們可以看到的那種幾分鐘就索引新內容的效果!

Baidu會是怎麼樣的一個系統?

顯然,Baidu除了雲裡霧裡的彰顯它的分詞技術外,很少詳細介紹他們的搜尋技術!

雖然不知道內幕,但我猜測,它肯定不是海量小索引的串聯,而是幾個大容量索引的群集。這種導致的結果就是,不容易實時更新,每次更新會耗費大量時間和檔案操作。

所以不難推測,Baidu很難像Google那樣實時更新索引。

當然,以上只是從外部表現來進行分析和推測,沒有實際內部技術依據!所以,雖然不能全部相信,但也不可不信。