论文部分内容阅读
根据CNNIC2011年1月发布的《第27次中国互联网发展状况统计报告》,截至2010年12月,中国网民规模达到4.57亿,搜索引擎使用率达到81.9%,成为网民第一大应用,.与此同时,中文网页总数已达600亿个,较2009年增长了78.6%。互联网的飞速发展,给搜索引擎提出了新的难题。由于网络信息的爆炸性增长,大规模的Web搜索引擎平均每秒需要处理上万次查询请求,每个查询的处理需要涉及到海量的索引数据,因此查询处理已经成为搜索引擎的主要的性能瓶颈。为了在不降低查询质量的前提下,提高搜索引擎的响应速度,大规模的Web搜索引擎采用了各种优化技术,缓存技术便是其中之一。搜索引擎的缓存系统一般来说主要包含两个层次,第一个层次是结果缓存,它将那些频繁出现查询的检索结果存放到缓存当中,这样当该查询再次出现时,便可直接在缓存中命中,从而极大的提高了查询响应速度。另一层次是倒排链缓存,由于搜索引擎处理的倒排索引容量一般都很大,无法完全将其加载到内存,因此在检索的时候经常需要从磁盘读入索引文件。由于磁盘读写的速度比内存慢很多,导致检索的大部分时间都耗费在了磁盘读写上。倒排链缓存就是为了减少与磁盘I/O的通信,根据一定的策略将一部分倒排链加载到内存,从而提高了系统的平均检索速度。本文以中科院计算所I3Search检索核心与分布式检索平台为基础,设计实现了一个两层的分布式搜索引擎缓存系统,并提出了一种新的检索结果缓存算法,该算法能够在索引快速更新的情况下,提高搜索引擎的查询处理速度,同时有效的保证了查询结果的质量。此外,本文还提出了一种新的查询成本度量方法,将该方法用于到结果缓存后,取得了较好的性能提升。本文的主要工作有:1)倒排链缓存在I3Search检索核心中添加倒排链缓存模块,并根据查询日志中term出现的频率,倒排链长度等因素,在内存中缓存总体收益最大的倒排链,从而提高I3Search的查询处理性能。2)结果缓存本文设计并实现了一种新的结果缓存算法,该算法以文档为单位对查询结果进行缓存,在保证缓存命中率的同时,还对由于索引更新而带来的缓存失效问题进行了有效的解决,从而降低了系统的查询负载。