發布時間: 2007-5-28 17:08 作者: sunny
對於搜尋引擎, 在索引量和搜尋量大到一定程度的時候, 索引更新的效率會逐漸降低, 伺服器的壓力逐漸升高, 因此基本上整個搜尋引擎的利用率可以說是越來越低了, 並且隨著海量資料存放區帶來的困難, 設計一個良好的分布式搜尋引擎將是一個搜尋引擎能否面相未來發展的關鍵因素了.
那麼分布式搜尋引擎的最主要的核心問題是哪些呢?
1. 分布的資訊擷取和計算以及對此進行的資料統一
這裡麵包括爬蟲/或者相應的資料擷取機制的分布, 對資訊進行加工的統一管理
2. 資料處理後的分布儲存和管理
主要是檔案的準確定位和更新,增加,刪除,移動的機制
3. 前端搜尋服務的分布
主要處理大規模並發請求時的分發機制
基於以上3個基本需求, 基本上可以構造如下4類的分布式搜尋引擎:
1. 分布式元搜尋引擎
2. 散列分布搜尋引擎
3. P2P 分布搜尋引擎
4. 局部遍曆型搜尋引擎
下面逐步介紹以上4類可擴充的搜尋引擎:
1. 分布式元搜尋:
擁有多個單個的搜尋引擎, 中心搜尋引擎是利用這些分布的單個的搜尋引擎的結果進行撮合得到完整的結果.
這樣的設計方案要求各個單元的搜尋引擎擁有相同的排序演算法和基本相同的資料輸出結構,以便由中心搜尋進行整理。
對於這類的搜尋引擎,關鍵的設計是要求每一個單元所擁有的索引不構成重複,但是進行資料的採集(爬蟲)時可以採取獨立的系統擷取後再按照規則分布到各個單元上。
優點,設計簡單,快速,並且任何一個單元可以隨時的摘掉但並不影響太大。
缺點,對於大規模的並發並非好的解決辦法
2.散列分布搜尋引擎
根據Query對索引伺服器和文檔伺服器進行散列,做到對於任何的索引詞能夠準確的定位到具體的索引伺服器並從而定位到正確的文檔伺服器。
優點,抗壓,設計簡單
缺點,對於單個索引伺服器或者文檔伺服器的容量等動態調整較困難
3.Peer 2 peer 搜尋引擎
著名的Napster就是這樣的一種設計,利用集中方式的索引,配合分佈於世界各地的單個的電腦形成的檔案源,構成了世界上最龐大的p2p搜尋引擎之一。
這種設計裡的中心索引伺服器只記錄一些相對關鍵的資訊,例如位置(IP,序號),歌曲的名字,作者等,其它的資訊一概可以從任何線上並且擁有本條全面資訊的電腦上擷取。同時p2p也可以根據搜尋建立一些中間路由的緩衝,即將一些搜尋結果存在單個或者相近的節點上,加快搜尋速度。
優點,可以超級大,基本上不需要有維護成本
缺點,中心伺服器的更新效率很低,資訊源不穩定
4. 局部遍曆型搜尋引擎
這類的搜尋引擎又可以採用多種設計方案,其中比較可行的是對資訊進行聚類後建立資訊樹,搜尋時只需要從樹的一個分支下去遍曆便可以了。局部遍曆應當有一定的規則,並且在設計初期就需要對每一個加入的索引進行相對準確的位置安排,使得放置在合適的節點上,以保證搜尋的效率。
優點,容易解決抗壓,搜尋精度高,搜尋效率高
缺點,設計複雜,調整索引所在節點的位置不易
總體來說,搜尋引擎的設計方法可以很多,這裡只是拋磚引玉,相信未來會有更多的巧妙的設計方案出現。