在搜索程序較為棘手一部分就是搜索範圍。
絕大數搜索程序都不能在單台計算機上完成足夠數量的數據搜索或併發搜索。
有時候為了避免由於單硬件問題出現導致無法服務,可以運行在多台機器上。
這種設計能夠不影響當前搜索程序運行的情況下臨時推出一台計算機來進行維護和升級。
搜索範圍有兩種界定方式: 淨處理內容和淨查詢吞吐量。
如果處理的數據量較大的話必須將這些數據分割成各個小部分,以便讓多台分離的計算機分別搜索對應的部分。
前端服務器會將新來的查詢請求發送至所有部分,然後將各個部分的搜索結果合併成總的搜索結果集。
如果你想在程序使用的高峯期獲得較高的搜索吞吐量,那麼你必須將同一索引複製到前述多個計算機上,前端加載平衡器會將新來的查詢請求發送給加載最少的後台計算機中。
如果你需要同時使用以上兩種界定方式,正如web搜索引擎做的那樣,那麼可以將以上實踐合併起來。
基於Lucene的開源項目Solr 可以實現多台機子直間 索引的複製 和 多核,這為我們省去不少事,你也可以建立自己的解決方案。
Nutch 也可以,不過我沒有接觸過,以後慢慢了解