文档章节

分布式搜索算法

杨尚川
 杨尚川
发布于 2015/04/05 03:10
字数 488
阅读 208
收藏 0

对于搜索引擎来说,索引存放在成千上万台机器上,如何进行分布式搜索呢?

 

假设搜索结果是以分页的方式显示,以PageNumber代表当前页,从1开始,以PageSize代表页面大小,默认为10,以N代表搜索服务器数量。最简单的分布式搜索算法为:有一台合并服务器负责接受用户的搜索请求,然后分别向N台机器获取前PageNumber*PageSize条结果,得到的结果数为N*PageNumber*PageSize,然后把这些数据重新进行排序,根据所要显示的页面PageNumber,获取从(PageNumber - 1) * PageSize + 1开始的PageSize条结果返回给用户。

 

这个算法很简单,但有一些问题:

 

问题一:每次翻页都要向每台搜索服务器搜索一遍

 

        通常情况下,用户在搜索内容时都是顺序翻页的,即从第一页往下顺序翻,这个算法没有设计缓存来减轻搜索服务器的压力。

 

问题二:越往后翻页,搜索服务器的搜索压力越大

 

        如果我们是查第100页,即第991-1000 条记录,那么这个算法需要从N台搜索服务器分别获取1000条记录才能完成,对于每台搜索服务器的搜索压力很大。

 

问题三:越往后翻页,合并服务器的排序压力越大

 

        大型搜索引擎往往是由成千上万台机器组成的分布式搜索集群,如果按这个算法来进行翻页,假设N为1000,查询第100页时,合并服务器得到的结果数为N*PageNumber*PageSize = 1000 * 100 * 10 = 1000000,要对这100万条结果进行排序,对合并服务器来说压力很大。对系统的可伸缩性是一种极大的破坏。

 

 

 


© 著作权归作者所有

杨尚川

杨尚川

粉丝 1102
博文 220
码字总数 1624053
作品 12
东城
架构师
私信 提问
【北京】微软中国互联网工程院招聘搜索/互联网相关开发工程师

非猎头非外包职位-发自微软HR 微软亚洲互联网工程院(Search Technology Center Asia- STCA)成立于2005年,在2011年整合了微软亚洲广告在线平台组后正开始新的“五年计划”。现已形成了针对微...

ArielXX
2012/05/24
595
2
美国讯升代招:北京知名公司聘搜索研发精英(可解决北京户口)

知名公司诚聘搜索研发精英。公司核心成员来自Google,微软,百度,雅虎等知名公司。主要从事搜索引擎核心开发。目前研发团队200人。 工作地点:北京朝阳区金台夕照(地铁10号线交通便利) 月...

hrjack
2011/10/25
1K
14
【上海】国内领先B2C互联网公司诚招搜索工程师(猎头职位),年薪25W-35W

职位描述: 搜索架构工程师 职位职责: 建立、维护与完善该公司的 1.分布式商品搜索系统(基于Solr) 2.分布式数据管理系统(基于Hadoop) 职位要求: 1. 本科以上学历,计算机、数学等相关专业 ...

怀才不遇
2012/03/08
2.2K
12
开源 | 伯克利AI分布式框架Ray,兼容TensorFlow、PyTorch与MXNet

  选自BAIR Blog   机器之心编译   参与:李泽南、刘晓坤      不久之前,机器之心推荐了一篇论文,介绍 UC Berkeley 研究员发布的分布式系统 Ray(参见:学界 | Michael Jodan 等...

机器之心
2018/01/10
0
0
【武汉猎头招聘】1号店武汉地区研发团队招聘搜索工程师

职位描述: 搜索架构工程师 职位职责: 建立、维护与完善该公司的 1.分布式商品搜索系统(基于Solr) 2.分布式数据管理系统(基于Hadoop) 职位要求: 1. 本科以上学历,计算机、数学等相关专业 ...

怀才不遇
2012/05/21
730
0

没有更多内容

加载失败,请刷新页面

加载更多

手写RPC框架指北另送贴心注释代码一套

Angular8正式发布了,Java13再过几个月也要发布了,技术迭代这么快,框架的复杂度越来越大,但是原理是基本不变的。所以沉下心看清代码本质很重要,这次给大家带来的是手写RPC框架。 完整代码...

全菜工程师小辉
5分钟前
0
0
【Java】开发收货

简介 谨以此篇,记载开发过程中的一些tips。 编译器 【Shift + F6】可实现变量的联动修改。

Areya
22分钟前
2
0
DOM官方定义

DOM Document Object Model 文档对象模型 DOM的官方定义:W3C的DOM,可以使程序或者脚本(JS或AS\JScript),动态的访问或者操作文档的内容、结构、样式。 DOM只是一个标准,操作网页的标准。...

前端老手
27分钟前
4
0
IT兄弟连 HTML5教程 HTML5的学习线路图 第一阶段学习网页制作

学习HTML5技术可并不是简单学会几个新增的标签而已,HTML5现在可以说是前端所有技术的代名词。需要学习的语言和工具不仅多,对于刚接触他们的新人会感觉很乱。另外,前端开发也会细分很多个开...

老码农的一亩三分地
29分钟前
4
0
可见性有序性,Happens-before来搞定

写在前面 上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO ...

tan日拱一兵
44分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部