论文部分内容阅读
搜索引擎已经成为互联网必不可少的基础服务,它可以帮助用户在海量信息中迅速准确的检索到需要的信息,给人们的工作和生活带来了极大的方便。随着网络的迅速发展,出现了大批中小规模的网站,而对于任何一个通用搜索引擎而言它不可能抓取互联网上所有的信息资源,为了帮助用户能够快速在中小型站点中检索到所需的信息,这就产生了对小型搜索引擎的需要。小型搜索引擎需要的硬件资源要求低,索引的数据量小,收录网站页面全,页面更新和索引周期短,可以有效提高站内的查全率和查准率。论文简要介绍了搜索引擎的原理和发展现状,详细研究了网络蜘蛛,索引系统和检索系统相关的技术,设计和实现,论文的主要工作可以归结为以下几个方面:
1)搜索引擎原理的研究。主要讨论了搜索引擎实现的原理,搜索引擎由网络蜘蛛系统,索引系统和检索系统三部分构成,从这三大系统出发,分别研究了网络蜘蛛的访问策略,URL消重,DNS缓存,蜘蛛访问控制,页面更新策略,索引信息预处理,中文分词,倒排索引以及检索系统中检索文档的常用评分算法;
2)重点研究了网络蜘蛛的设计与实现。本部分具体介绍了如何使用C++开发一个功能完备的网络蜘蛛系统,讨论了HTTP协议的request/response模型,网络蜘蛛分为底层网络蜘蛛和上层网络蜘蛛,底层网络蜘蛛实现了网页请求的发送与接收,Form,MultipartForm,Cookie,chunked编码文件的解码,GZIP解压缩编码文件以及字符集的转换;上层网络蜘蛛实现了页面的抓取、存储,页面字符集的识别,URL的提取,URL的消重、存储,蜘蛛访问页面频率控制和多线程抓取页面的功能;
3)索引系统的设计与实现研究。本部分介绍了Lucene索引的索引方法和内置分词的功能,实现了HTML,MS Word和PDF三种格式文件的预处理,采用JTidy和标签过滤法实现了HTML文件的预处理,采用PDFBox实现PDF文档的预处理,采用Apache POI实现了Word文档的预处理,利用IK Analyzer实现了中文分词,结合这些模块实现了索引系统;
4)检索系统的设计与实现研究。本部分分析了检索的流程以及Lucene检索的使用方法,设计了两种方案进行检索,其中第二种方案单字前缀检索方法在一定程度上解决了索引和检索分词粒度不同产生的问题。