aihot  2020-11-12 11:22:34  OpenCV |   查看评论   

SimHash

  基本思路如上图所示。先通过分组匹配找到与新网页A/B/C/D块对应位置范围内完全相同的网页,再一一匹配查找是否存在完全相同的文档指纹,当然我们也可以不以完全相同为标准,比如海明距离3以内即可。

搜索引擎缓存机制

  搜索引擎通常通过缓存,也即在高速内存硬件设备内开辟一块数据存储区,用来容纳常见的用户查询及搜索结果(或者索引数据及搜索的中间结果),同时采取一定的管理策略来维护存储区内的数据。

搜索引擎缓存系统架构

  缓存系统包含两个部分,即缓存存储区及缓存管理策略。缓存存储区是高速内存中的一种数据结构,可以存放某个查询对应的搜索结果,也可以存放搜索中间结果,比如一个查询单词的倒排列表。缓存管理策略又包含两个子系统,即缓存淘汰策略和缓存更新策略。

  对于一个优秀的缓存系统来说,应该最大化缓存命中率以及保持缓存内容与索引内容一致

  常见的缓存对象可以是搜索结果,或者查询词汇对应的倒排列表。对于搜索结果型缓存来说,用户查询的响应速度非常快;而倒排列表型缓存的命中率高。有时候我们还可以保存两个经常搭配出现单词的倒排列表的交集,以这种中间结果形式作为缓存内容。

  搜索引擎缓存的结构设计可以有多种选择,最常见的是单级缓存,也可以设计为二级甚至是三级缓存结构,比如二级缓存,就可以第一级缓存是搜索结果型缓存,第二级是倒排列表型缓存,这就兼有了响应速度快和命中率高这两个优点。

缓存淘汰策略

  缓存淘汰策略和操作系统中的内存管理策略有相似的地方。

动态策略

  动态策略的缓存数据完全来自于在线用户查询请求,这种缓存策略的基本思路是:对缓存项保留一个权重值,这个权重值根据查询命中情况动态调整,当缓存已满的情况出现时,优先淘汰权重值最低的那个缓存项。

  比如LRU策略,就是最近最少使用策略,淘汰掉最近最少使用的缓存内容。Landlord策略是一种加权缓存策略,计算出缓存项目的性价比,然后如果缓存已满,淘汰掉性价比低的缓存内容。还有SLRU策略,这是对LRU策略的改进,缓存被分为了保护区和非保护区,每个区域的缓存都按使用频度由高到低排序,如果缓存未命中,则放入非保护区高频端(MRU),如果命中了,则放入保护区高频端,这样保护区的记录最少要被访问两次。

混合策略

  混合策略是指其缓存数据一方面来自于用户查询,另一方面来自于搜索日志等历史数据。

  比如SDC策略:静态动态混合缓存策略(Static and Dynamic Caching),静态缓存就事先根据搜索日志统计出最高频的那部分查询请求,动态就结合LRU或者SLRU这些动态策略来搞。SDC策略是目前效果最好的缓存策略之一。还有AC策略,这里就不详细说了。

缓存更新策略

 

  目前的缓存更新策略可以分为两种:缓存--索引密切耦合策略和缓存--索引非耦合策略。

  缓存--索引密切耦合策略就是在索引和缓存之间增加一种直接的变换通知机制,一旦索引内容发生变化则通知系统缓存,然后系统缓存将改变的内容进行更新。

  缓存--索引非耦合策略就是给每个缓存项设置一个过期值,随着时间流逝,缓存项会逐渐过期。

  当然如果内容更新不频繁,也可以简单的,等到夜深人静的时候统一更新缓存就是了。

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自浅谈搜索引擎基础(下)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]