论文部分内容阅读
现今垂直搜索引擎技术已成为企业内部必不可少的技术支撑环节,它帮助企业为用户提供某一特定领域的信息搜索服务。但是随着企业的不断的发展,越来越多的企业从单一业务向综合业务发展,比如做在线旅游的企业会同时拥有景点门票、酒店、旅游线路、机票等业务,不同业务之间的产品特性各不相同,这样也会带来搜索的差异性,那么如何快速搭建不同业务的垂直搜索引擎成为企业内部急需解决的问题。本文基于Lucene设计并实现了一套垂直搜索引擎开发框架,从数据的提取、索引的建立、关键词搜索、数值类字段搜索、统计等功能为企业搭建垂直搜索引擎提供完整的解决方案,降低企业搭建搜索引擎的门槛,使企业内部的开发人员即使不懂搜索引擎的原理也能搭建垂直搜索引擎,同时不用担心性能问题。本人在论文中主要的工作内容和贡献如下:1、提出配置化设计方法。通过实现对不同业务的索引数据源配置、索引字段配置、分词词库配置、纠错词库配置来实现灵活、高效的业务垂直搜索引擎搭建。2、设计实现了优化的数值类字段范围搜索方法。针对数值类型的字段设计一种正排表结构,当搜索条件即包含关键词搜索又包含数值类型范围搜索时,根据关键词搜索得到的文档编号从正排表中获取对应的数值,进行条件过滤得到最终的结果,此方法较通过倒排表实现数值类范围搜索性能更优。3、设计并实现了字段统计功能。在Lucene中并没有直接实现针对字段的统计功能,本文设计并实现了基于FieldCache和Array数据结构的统计功能,保证统计性能在百万级的搜索结果内能毫秒级完成。4、提出了自动优化的查询表达式解决方案。调用方在通过查询表达式进行搜索时,不同人编写的查询表达式执行效率会各不相同,本文将通过自动分析调用方传入的查询表达式,找出执行效率差的表达式,重写成执行效率较高的表达式进行搜索。5、设计并实现了多业务引擎之间搜索逻辑共享方法。为了实现多个业务垂直搜索引擎之间搜索逻辑的共享,本论文重新设计了搜索方法,增加了路由机制,在保证各个业务垂直搜索引擎搜索逻辑独立的情况下又能实现共享。6、通过使用本文实现的搜索开发框架搭建酒店业务搜索引擎和酒店点评业务搜索引擎两个实际的案例,对本文提出的搜索算法、字段统计和查询表达式优化方法进行了性能测试,测试结果表明:数值类范围搜索较Lucene原生实现方式平均响应时间快了5到10倍;字段统计在150万的索引量下平均响应时间为25毫秒;查询表达式优化后平均响应时间位13毫秒,而优化前查询平均响应时间为3秒,效果显著。