技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> Query Forwarding in Geographically Distributed Search Engines

Query Forwarding in Geographically Distributed Search Engines

浏览:1875次  出处信息

    这篇论文讲的是,一个全球的搜索引擎,需要在不同的地区布署一套服务,不同地区的索引不同。注:这也很容易理解,首先是带宽的压力,索引一般都是TB级别的,不能到处拷;其次是性能考虑,不同地区用户关注的网页是不同的,把用户不需要的网页也加进索引里,会使得检索性能很差。

    但是如果要地区的索引不能满足用户的需求,需要读取别的地区的索引的时候,怎么办?需要解决两个问题,一是是否需要读取别的地区的索引,二是读取哪些地方的索引。

    所有检索都读取所有的索引,显然是不现实的。第一个问题比较好解决,只需要判断一下结果的质量,质量低于一定值就去读取别的地方的索引。第二个问题比较难解决。

    论文里用的是线性规划解决第二个问题。这里很奇怪的是,论文里不考虑语言的差异,考虑到语言的差异,很多工作都会变容易,比如用户输入的是中文,需要去到美国的网页库才能找到比较好的结果的可能性比较少。当然如果用户查询敏感词例外。

    下面介绍一下原文解决第二个问题的思路吧。首先是给在本地检索出的结果打分,然后预估一下别的地方的索引里的网页最高能打到多少分,如果分数偏低就不查询那个地方的索引。预估是很困难的。这里首先不能把排序算法看成是黑盒,而是看成基于成词出现次数线性叠加的排序算法,也就是BM25。然后线下构造一批长QUERY去查询,算出这些QUERY返回结果的分数。线上QUERY到来的时候,根据线下的QUERY预计分数。这里用到线性规划(LP)。把TERM理解成方程里的Xi,每个线下和长QUERY理解为Xi的不等式,比如某QUERY有TERM Xi,Xj,Xk,结果的分数为C,则列等式Xi+Xj+Xk < C。一个新的QUERY来的时候,先切出TERM,假设有TERM Xi,Xj,问题就变成了求解Xi+Xj的最大值。

    每一个地区的索引,都查询一次这批QUERY,所有都有一套方程,不同地区分别算,如果算出某地区的解超过域值,则查询

    能这样建模与RANK策略是分不开的,前面已经说了,是基于BM25的RANK,TERM的作用是线性叠加的。但是现实中的RANK策略要复杂很多,对这个模型的有效性表示怀疑。

    个人觉得既然RANK只考虑TERM的出现次数,不如把每个TERM在每份索引里拉链的长度,全球存放,量不大,直接根据拉链长度作预估。

    论文后面还讨论了,把部分热门的网页,在多个地区的索引里重复放。这个工作相对容易些,线下统计一下访问记录就可以了。但是如果追求时效性,还是很麻烦的。不过个人认为个工作也不一定要做得很通用,可以观察一下,认为哪些站点是全球通用的,哪些是只有当地人才上的。

    再接着讨论了CACHE,这个就没什么意思了,这是通用的优化技术,跟QUERY转发,没啥关系

    再接着讨论了一下将来可能的优化,包括:

    (1)因为本地已经有部分结果,所以请求远端的时候,可以少请求些结果。这个方法不一定靠谱,很多检索系统,不管要几个结果,都要把倒排完全遍历才能找出最优解

    (2)检索的过程是先检索完本地索引,发现结果不够,再请求外地的索引。可以考虑先展现本地结果,外地的结果回来之后,再刷新展示。这个用户体验很不好。

    (3)根据等式预估出某QUERY肯定要请求外地结果,请求本地结果与外地结果并行。

    (4)如果预估出,只需要要向一个外地索引请求,这时候就不用等到对方结果返回来,再MERGE,再返回给用户。而是在外地索引正在进行检索的时候,把本地结果传过去,等外地结果算出来的时候,就可以立即归并,然后返回给用户。本质是把检索与传数据并行。

    (2)、(3)、(4)的本质是在不减少计算量的情况下,减少用户的等待

建议继续学习:

  1. 分布式缓存系统 Memcached 入门    (阅读:14700)
  2. 怎样用好Google进行搜索    (阅读:14630)
  3. Zookeeper工作原理    (阅读:10352)
  4. GFS, HDFS, Blob File System架构对比    (阅读:9355)
  5. Zookeeper研究和应用    (阅读:8500)
  6. 淘宝搜索:定向抓取网页技术漫谈    (阅读:8188)
  7. 分布式日志系统scribe使用手记    (阅读:8021)
  8. 一致性哈希算法及其在分布式系统中的应用    (阅读:7911)
  9. 分布式哈希和一致性哈希    (阅读:7634)
  10. HBase技术介绍    (阅读:6736)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1