项目介绍:基于Lucene和Hadoop的维基百科分布式搜索引擎
项目概述
本项目的目标是开发一个专门为英文维基百科优化的分布式搜索引擎。通过利用Lucene和Hadoop,我们旨在提高搜索效率并增强系统的容错能力。项目重点在于实现模糊搜索算法,并高效处理维基百科的大数据集(约90GB)。
Demo 展示
以下是本项目的演示视频,展示了搜索引擎的功能和操作流程。
挑战
- 数据集庞大(约90GB),直接使用Lucene索引耗时且超出服务器容量。
- Lucene和BM25搜索算法不原生支持分布式搜索。
- 索引文件分散在不同节点,节点下线会导致集群瘫痪。
解决方案
- 使用Hadoop的MapReduce进行集群并行处理,提升索引效率并分散存储索引文件。
- 自实现BM25Similarity类,支持分布式搜索结果的合并与汇总。
- 通过索引文件备份提高系统容错性。
交付成果
- 一个简单的前端,供用户搜索和查看维基百科结果。
- 一个后端,用于查询实现模糊搜索算法的托管解决方案。
- 一个托管解决方案,用于存储整个英文维基百科文本(约80GB)并带有缓存。
我的职责
- 基于Lucene和BM25算法实现分布式搜索和结果合并方法。
- 基于Hadoop实现分布式索引和存储。
- 基于Javalin实现计算结点间轻量级通信。
- 基于SpringBoot实现网页后端。
总结
本项目通过结合Lucene和Hadoop,成功构建了一个高效的分布式搜索引擎,能够处理维基百科的大规模数据集,并支持模糊搜索功能。通过自实现的BM25Similarity类和索引文件备份,系统具备了良好的容错性和扩展性。未来可以进一步优化搜索算法,提升用户体验。