文档章节

分布式搜索算法

杨尚川
 杨尚川
发布于 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万条结果进行排序,对合并服务器来说压力很大。对系统的可伸缩性是一种极大的破坏。

 

 

 


© 著作权归作者所有

杨尚川

杨尚川

粉丝 1100
博文 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

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部