论文部分内容阅读
企业内部有大量文档资料需要查询时,往往会使用搜索引擎进行全文检索。目前,行业内比较通用的解决方案为使用开源的分布式搜索引擎Elastic Search。然而文档资料与通常我们看到的通用搜索引擎的搜索单元有较大区别,文档资料的大小远大于web页面的大小。此时,在应对大量文档检索时,通用的搜索引擎在处理这种千万级别甚至亿级别大规模文档检索时,性能表现不佳。大型企业常常需要使用搜索引擎对企业内部的文档资料进行全文检索。目前,较为通用的方式是实用开源的分布式搜索引擎如Solr、Elastic Search等。但企业内部的文档资料与普通的搜索对象(例如Web页面、日志、邮件等)存在着较大的区别,其中最重要的区别就是文档资料的大小远大于普通搜索单元的大小。因此,通用的搜索引擎在处理这种千万级别甚至亿级别大规模文档检索时,会出现性能不佳、搜索展示效果不友好等缺点。本论文提供了一个海量文档数据搜索引擎的优化方案,核心是采用开源的分布式搜索引擎Elastic Search。本论文从业务出发对Elastic Search的使用进行优化,包括对索引流程进行优化、索引存储策略优化、对文档进一步处理并减小搜索单元、优化在线展示方案等等,其中与索引相关的主要工作为将文档转换为HTML格式并且对转换后的HTML文档按照相应规则进行拆分。在保留原有搜索功能不变的情况下,将文档拆分成了更小单元,使索引单元更符合搜索引擎结构,相对应解决搜索效果不好、搜索展示效果不佳以及高亮时间长等问题。通过测试,文档转换和拆分的单机性能能够达到2m/s以上,转换和拆分的正确率达到了85%以上,文档经过转换和拆分后索引的查询响应速度在一定数量级上提高了25%。本论文还针对搜索用户体验,开发了一些搜索引擎的核心功能,包括关键词提取以及摘要提取功能。一、关键词提取模块致力于解决搜索中搜索权重和搜索体验问题,在搜索时,匹配到的关键词有更高的搜索权重,另外关键词有利于用户更直接了解搜索到的文档。该模块主要实现了几种关键词提取技术模型(包括新词发现、基于特征的抽取、基于图的抽取),并通过Learning to Rank的机器学习方法选出最佳的关键词结果。最终达到F值50%以上。二、摘要提取模块致力于提升搜索中的用户搜索体验,为用户快速了解文档内容提供依据。该模块主要实现了几种摘要提取技术模型(包括基于特征的提取、基于图的提取、基于聚类的提取),并通过Learning to Rank的机器学习方法选出最佳的摘要结果。最终达到F值50%以上。本论文的研究为类似场景的企业级搜索引擎的优化提供了一种可行的解决方案。目前的开源分布式搜索引擎虽然已经达到了即插即用的水平,但针对某一特定场景的搜索优化和搜索相关的辅助功能缺少比较完整的实施方案。本论文致力于从真实的业务场景和实际应用出发,构建针对海量文档数据的高可用性、高性能且用户友好的搜索引擎,并且针对实施方案进行试验对比。