论文部分内容阅读
互联网作为信息的载体已经成为人们获取信息不可缺少的工具。互联网的发展给人类带来了巨大的便利,人们可以跨越时间和空间的距离来共享大量信息。但是,随着互联网的迅速发展,网络上的资源日新月异、内容丰富多彩,如何快速有效的找到用户有用的信息成为获取信息技术亟待解决的问题,这时为满足广大群众信息检索需求的通用搜索引擎便应运而生了。通用搜索引擎的产生,极大的提高了人们检索信息的效率,因此,通用搜索引擎得到了广泛的应用。据CNNIC(中国互联网网络信息中心)第二十六次互联网调查显示,搜索以76.3%的绝对优势成为用户从互联网上获得信息的主要方式。在全球绝大多数的调查中,搜索引擎都是互联网上使用程度仅次于电子邮箱的服务。但是随着信息多元化的增长,这些通用搜索引擎在检索某一学科或主题的信息时,无论是检索效率还是检索精度都无法满足人们的需要。这是因为:对于任何用户,只要用户输入的关键词相同,通用搜索引擎反馈的结果就相同,它没有考虑到用户兴趣和需求的差异。但对不同的用户,他们的兴趣和需求往往存在一定的差异。例如,牙医和陶瓷爱好者对于“陶瓷”一词的关注点就会不同。为了能够更加快速、准确、有效的检索某一学科或主题的信息,有必要开发针对特定领域的信息检索系统,即主题搜索引擎。与通用搜索引擎不同,主题搜索引擎只采集web中的部分信息,并对网页进行主题相关度判断,只保存与主题相关的网页,同时还运用专业领域知识、相关度计算、机器学习等智能化策略,以弥补通用搜索引擎搜索结果数量大,相关度较低等缺陷,因此主题搜索引擎在查询的准确率和效率上较通用搜索引擎都有显著的提高。索引技术是搜索引擎的核心技术之一,索引技术的好坏直接影响到搜索引擎的查准率以及对用户的响应速度,因此对搜索引擎索引技术的研究是十分必要的。本文在深入了解搜索引擎相关索引技术的基础上,对开源源代码——Lucene进行剖析与实践,分析了Lucene的系统组织结构、基本数据类型、索引逻辑结构以及索引数据库的文件结构,深刻理解其索引机制、索引权重的控制、索引优化的方法。在此基础上,以计算机主题为例,利用Lucene提供的API接口,对Lucene源代码进行了如下几个方面的改进:①改进索引词典文件结构。用户利用计算机主题搜索引擎进行查询时,其检索词大部分会是计算机专业词汇,如果像Lucene一样将整个索引词典文件导入内存,无疑会花费更多的检索响应时间,但如果将检索词按计算机专业词汇和非计算机专业词汇进行分类,分别放入两个索引词典文件中,并对它们进行分组排序,检索时只将存放计算机专业词汇的索引词典文件导入内存中,将会减少不必要的检索响应时间。②对待索引文档设置权值。由于Lucene面对的不是某一个学科或主题的信息,因此其文档得分机制缺乏针对性,从而没有对待索引文档设置权值。为了满足计算机主题检索的需要,有必要根据待索引文档的类型和检索的需求对待索引文档设置不同的权值,有效地提高计算机专业文档的权重,以提高检索计算机主题信息的精度。③改变索引方式。Lucene提供的默认的索引方式是通过单个索引器在磁盘上建立索引文件,这样会频繁的进行I/O操作,导致建立索引的效率下降。本文结合FSDirectory(文件系统路径)和RAMDirectory(内存中的一块区域)这两种目录的优点,设计了采用以内存为缓冲区建索引文件的分布式并行索引方法建立索引,以缩短索引的建立时间。最后根据上述改进方法实现了计算机主题搜索引擎的索引器部分,并通过设计一个适合计算机主题检索的全文检索系统与Lucene全文检索系统进行对比试验,以验证本文所实现的索引器的可行性与有效性。实验结果表明:与Lucene相比,本文所实现的索引器无论是检索响应时间还是检索结果的精度都更适合计算机主题信息的检索,创建索引的效率也明显高于Lucene创建索引的效率。