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