在搜索程序较为棘手一部分就是搜索范围。
绝大数搜索程序都不能在单台计算机上完成足够数量的数据搜索或并发搜索。
有时候为了避免由于单硬件问题出现导致无法服务,可以运行在多台机器上。
这种设计能够不影响当前搜索程序运行的情况下临时推出一台计算机来进行维护和升级。
搜索范围有两种界定方式: 净处理内容和净查询吞吐量。
如果处理的数据量较大的话必须将这些数据分割成各个小部分,以便让多台分离的计算机分别搜索对应的部分。
前端服务器会将新来的查询请求发送至所有部分,然后将各个部分的搜索结果合并成总的搜索结果集。
如果你想在程序使用的高峰期获得较高的搜索吞吐量,那么你必须将同一索引复制到前述多个计算机上,前端加载平衡器会将新来的查询请求发送给加载最少的后台计算机中。
如果你需要同时使用以上两种界定方式,正如web搜索引擎做的那样,那么可以将以上实践合并起来。
基于Lucene的开源项目Solr 可以实现多台机子直间 索引的复制 和 多核,这为我们省去不少事,你也可以建立自己的解决方案。
Nutch 也可以,不过我没有接触过,以后慢慢了解