170 likes | 304 Views
基于日志分析的搜索引擎 查询结果缓存研究. 马宏远 王斌 ICTIR. 引言. 网民增多,对搜索引擎的使用日益频繁。同时互联网网页的规模也在不断膨胀。 搜索引擎需要尽可能多的索引网页并 迅速 提供查询结果。 缓存通过复制频繁请求的数据到速度较快的存储层次,使后续 相同 的请求得以快速访问,并减少服务器的系统负载。. 1. 主要工作. 对 sogou 搜索引擎一个月的用户查询日志进行分析,研究其面向缓存应用的工作负载特性。 通过实验和分析,研究缓存设置对搜索引擎系统优化的贡献。 这是在中文商业搜索引擎环境下,第一次对搜索引擎缓存特性进行分析。.
E N D
基于日志分析的搜索引擎查询结果缓存研究 马宏远 王斌 ICTIR
引言 • 网民增多,对搜索引擎的使用日益频繁。同时互联网网页的规模也在不断膨胀。 • 搜索引擎需要尽可能多的索引网页并迅速提供查询结果。 • 缓存通过复制频繁请求的数据到速度较快的存储层次,使后续相同的请求得以快速访问,并减少服务器的系统负载。
1.主要工作 • 对sogou搜索引擎一个月的用户查询日志进行分析,研究其面向缓存应用的工作负载特性。 • 通过实验和分析,研究缓存设置对搜索引擎系统优化的贡献。 • 这是在中文商业搜索引擎环境下,第一次对搜索引擎缓存特性进行分析。
2.搜索引擎查询结果缓存特性分析 • 本文中性能特性的衡量指标是命中率(Hit) Hit=Requstcache / Requst# 所有查询 命中缓存的查询
2.搜索引擎查询结果缓存特性分析 • 系统平均访问时间 Taccess=Hit*T1 + (1-Hit)*T2 T1 为缓存访问时间,T2为磁盘访问时间 有T1 << T2
2.1 局部性 • 计算机在较短时期内,程序访问局限在一定区域。这只是一种经验性质,不能保证成立,但可能性通常很高。 • 查询的词符合Zipf定律,即一个单词出现的频率与它在频率表里的排名成反比。
2.1 局部性 对查询日志的分析 频率最高的20%查询 占据了80.45%的查询请求量 查询频率(次数) 查询词按照查询频率的排序
用搜狗实验室中,sogou搜索引擎2008.8.26的53万查询数据实验,也能得出相同结果用搜狗实验室中,sogou搜索引擎2008.8.26的53万查询数据实验,也能得出相同结果 查询频率(次数) 查询词按照查询频率的排序
2.2 查询结果缓存策略 • 分为静态策略和动态策略 • 静态策略是离线方法。通过对用户查询日志的频率统计,将频率最高的一部分查询结果放到缓存中。 • 动态策略是在线方法。缓存的容量是固定的,随着时间推进,当所存的内容超过缓存容量时,就需要到替代算法。 • 最常用的算法即为LRU(最近最少使用算法)
2.2 查询结果缓存策略 实验: 以8月23日的用户查询日志作为历史信息 8月24日的用户查询日志作为测试集 命中率(%) 动态策略 静态策略 缓存容量(千个查询词)
2.2 查询结果缓存策略 命中率(%) 动态策略 静态策略 缓存容量(千个查询词) 结论1:随着缓存容量的增大,无论静态策略还是动态策略,都会获得较好的命中率 。 结论2:动态LRU策略比基于历史信息的静态策略具有更好的命中率,因为8月23日的查询集合和8月24日的查询集合重复度不高。
在《On caching search engine query results》(Markatos,2001)中,则有如下结果 SLRU 命中率(%) LRU 静态策略 缓存容量(MB)
2.2 查询结果缓存策略 两种缓存策略的对比 • 静态缓存策略只存下热门的查询;而动态缓存策略存的是最近所发生的查询,也许这些查询并不是很热门。 • 查询热点瞬息万变,而静态缓存里的查询都提取自历史信息,时效性可能会跟不上,在查询热点词时效果不好。 • 如近期搜索“斯巴达”、“张高丽”等热点词,如果静态缓存所依赖的历史信息不够新,则可能无法命中。
2.2 查询结果缓存策略 • 更好的策略:静态和动态混合的缓存策略。 • 将缓存分割为两块空间:静态缓存依然基于历史信息;动态缓存依然采用动态替换算法。 • 当一个查询请求到达,首先在静态缓存中查找;如果没有命中,则到动态缓存中查找。
2.2 查询结果缓存策略 继续试验,查询日志同上一个试验 命中率(%) 缓存容量大 缓存容量小 静态缓存的比例(从0到1) 结论1:混合缓存策略相比纯动态策略和纯静态策略,命中率都会得到一定幅度的提升。
2.2 查询结果缓存策略 继续试验,查询日志同上一个试验 命中率(%) 缓存容量大 缓存容量小 静态缓存的比例(从0到1) 结论2: 对于大容量缓存,采用混合策略,命中率几乎没有提升。 对于容量相对较小的缓存,则具有明显的效果, 如10K的缓存容量,命中率会比动态策略提升4.45个百分点。
2.2 查询结果缓存策略 继续试验,查询日志同上一个试验 命中率(%) 缓存容量大 缓存容量小 静态缓存的比例(从0到1) 结论3(来自 《On caching search engine query results》): 适中的缓存容量已经能够得到比较好的命中率,一味扩增缓存容量(如大于160K),命中率并不会有太大提高,而且内存中的缓存区也很有限。