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