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