● 摘要
随着互联网的高速发展,企业自身对信息架构、管理、发布的需求,以及用户对信息的组织、查询、可寻性的要求越来越高,而且传统的基于单机系统的集中式信息检索技术已无法满足以大规模数据集为基础的并发多用户并行信息检索的需求,如何提供针对性和准确性更高,检索快速,安全稳定,性能高效的搜索,成为搜索平台面临的一大难题。
本课题对具有索引和检索功能的开源框架Lucene进行研究,并且结合要被索引的数据源进行分析,提出对索引库进行水平和垂直联合拆分的设计,并对核心功能索引和检索进行算法优化,实现RAM与FS协同分布式并行索引和分布式并行检索。为了更好更安全地进行并行处理,分别在索引模块,继承ThreadPoolExecutor类并重写该类的构造方法和executor方法,按功能需求设计一个索引线程池管理类WriteThreadPool,用来调度索引任务;在检索模块,引入ExecuteService类做线程池管理,利用有返回结果的Callable类做检索任务,Callable通过Future类来获取任务调度的结果。为了减小对索引库的读写压力,对索引库建主从库进行读写分离,还巧妙地利用Lucene索引表的版本号结合主从库更新日志来实现主从库实时同步,从而实现实时搜索。
本课题以一家视频公司的视频信息为研究对象,该视频信息以文本形式存储在视频表,作为数据源,基于Lucene开源框架对数据源进行索引形成索引库,有效结合分布式架构,利用ZooKeeper做分布式监控器,实现一个分布式文本(视频信息)实时搜索平台。这个搜索平台的目标是让视频搜索更高效,更灵活,更轻松,更精确,让用户更轻松地使用视频服务,从而提高本视频公司在整个行业内的竞争优势。