论文部分内容阅读
Internet的迅速普及和飞速发展,使人们面临着一个信息的海洋,快速从中获得真正重要的信息变得至关重要。搜索引擎(主要指全文搜索系统)即是提供这种功能的一种工具。然而在搜索引擎返回的检索结果中,存在大量的重复网页,它们主要来自网站之间的转载。这些内容重复的网页既占用了网络带宽,又浪费存储资源,用户不希望看到一堆内容相同或近似的检索结果,真正有用的结果往往淹没在这些重复信息之中而不易被发现。如果能够有效消除这些重复网页,不但会提高检索的准确率,节省用户的时间和精力,而且对搜索系统本身而言可以节省网络带宽,降低存储成本,提高搜索引擎的性能。本文主要研究搜索引擎中网页查重的问题。首先简要介绍了搜索引擎的原理,发展现状,存在的不足和发展趋势,以及本课题研究的背景和意义。其次对当前国际和国内相关领域的研究动态进行了深入的分析,详尽介绍了网页查重算法的起源和研究历史,网页查重算法的分类及各个分类的代表性算法,这些算法对原有算法的改进、性能和优缺点。其中着重介绍了非常优秀和经典的算法shingling和simhash,许多算法都是基于这两种算法的思想进行的改进。Google正是利用simhash来实现网页查重。Charikar的simhash算法对检测数万亿的存储级别的相似网页是非常实用的。作为指纹技术的simhash具有相似文档的指纹只存在很小位数的不同的特性。Simhash是一种降维技术,可以将高维向量映射为位数较小的指纹。它在网页中的应用过程如下:首先将文档转化为特征码的集合,每个特征码附有一个权值。特征码的生成采用IR技术,比如分词、大小写转换、停止词去除。一个附有权值的特征码的集合构成一个高维向量,通过simhash可以将这个高维向量转化为f位的指纹,f的值很小,比如64。最后详尽介绍了在很多重要的项目中广泛应用并取得一致好评的开源项目Clucene,以及如何利用Clucene建立自己的搜索引擎系统,进行索引和检索查询。Clucene提供了丰富的API函数,利用这些API函数可以方便的建立自己的搜索引擎系统。详细介绍了主要的类,数据结构,系统结构及如何实现索引,搜索和分析。