4类的分布式搜索引擎

转载 2006年06月20日 23:20:00

       对于搜索引擎, 在索引量和搜索量大到一定程度的时候, 索引更新的效率会逐渐降低, 服务器的压力逐渐升高, 因此基本上整个搜索引擎的利用率可以说是越来越低了, 并且随着海量数据存储带来的困难, 设计一个良好的分布式搜索引擎将是一个搜索引擎能否面相未来发展的关键因素了.


那么分布式搜索引擎的最主要的核心问题是哪些呢?


1. 分布的信息获取和计算以及对此进行的数据统一
这里面包括爬虫/或者相应的数据获取机制的分布, 对信息进行加工的统一管理


2. 数据处理后的分布存储和管理
主要是文件的准确定位和更新,增加,删除,移动的机制


3. 前端搜索服务的分布
主要处理大规模并发请求时的分发机制


基于以上3个基本需求, 基本上可以构造如下4类的分布式搜索引擎:
1. 分布式元搜索引擎
2. 散列分布搜索引擎
3. P2P 分布搜索引擎
4. 局部遍历型搜索引擎


下面逐步介绍以上4类可扩展的搜索引擎:
1. 分布式元搜索:
拥有多个单个的搜索引擎, 中心搜索引擎是利用这些分布的单个的搜索引擎的结果进行撮合得到完整的结果.
这样的设计方案要求各个单元的搜索引擎拥有相同的排序算法和基本相同的数据输出结构,以便由中心搜索进行整理。
对于这类的搜索引擎,关键的设计是要求每一个单元所拥有的索引不构成重复,但是进行数据的采集(爬虫)时可以采取独立的系统获取后再按照规则分布到各个单元上。
优点,设计简单,快速,并且任何一个单元可以随时的摘掉但并不影响太大。
缺点,对于大规模的并发并非好的解决办法


2.散列分布搜索引擎
根据Query对索引服务器和文档服务器进行散列,做到对于任何的索引词能够准确的定位到具体的索引服务器并从而定位到正确的文档服务器。


优点,抗压,设计简单
缺点,对于单个索引服务器或者文档服务器的容量等动态的调整较困难


3.Peer 2 peer 搜索引擎
著名的Napster就是这样的一种设计,利用集中方式的索引,配合分布于世界各地的单个的计算机形成的文件源,构成了世界上最庞大的p2p搜索引擎之一。
这种设计里的中心索引服务器只记录一些相对关键的信息,例如位置(IP,序列号),歌曲的名字,作者等,其它的信息一概可以从任何在线并且拥有本条全面信息的计算机上获取。同时p2p也可以根据搜索建立一些中间路由的缓存,即将一些搜索结果存在单个或者相近的节点上,加快搜索速度。


优点,可以超级大,基本上不需要有维护成本
缺点,中心服务器的更新效率很低,信息源不稳定


4. 局部遍历型搜索引擎
这类的搜索引擎又可以采用多种设计方案,其中比较可行的是对信息进行聚类后建立信息树,搜索时只需要从树的一个分支下去遍历便可以了。局部遍历应当有一定的规则,并且在设计初期就需要对每一个加入的索引进行相对准确的位置安排,使得放置在合适的节点上,以保证搜索的效率。


优点,容易解决抗压,搜索精度高,搜索效率高
缺点,设计复杂,调整索引所在节点的位置不易


总体来说,搜索引擎的设计方法可以很多,这里只是抛砖引玉,相信未来会有更多的巧妙的设计方案出现。

分布式搜索引擎Elasticsearch(一)

Elasticsearch是一个基于Lucene的开源分布式搜索引擎,具有分布式多用户能力,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的...
  • u012373815
  • u012373815
  • 2016年01月05日 09:36
  • 2077

Python分布式爬虫打造搜索引擎Scrapy

小技巧:Linux环境下,pycharm命令快速启动 : vim ~(用户主目录)/.bashrc 添加如下内容,完成后,source ~/.bashrc使配置文件刷新。 Navicat连接...
  • qq_33936481
  • qq_33936481
  • 2017年07月17日 18:56
  • 1565

自己写得一个分布式海量文件搜索引擎

最近找不到一款适合的海量文件的内部搜索引擎,只好自己花时间动手写了一个简单的版本,并注册了个域名将其放在美国的一个VPS上。详情请见http://www.enpknowledge.com/index_...
  • carlwu
  • carlwu
  • 2016年11月10日 17:32
  • 698

Python分布式爬虫必学框架Scrapy打造搜索引擎

Python分布式爬虫必学框架Scrapy打造搜索引擎 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一...
  • cadn_jueying
  • cadn_jueying
  • 2017年11月21日 19:35
  • 334

分布式搜索引擎ElasticSearch 介绍与简介

分布式搜索引擎ElasticSearch(一) – 介绍与简介ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎;设计用于云计算;能够达到实时搜索,稳定,可靠,...
  • xinghuo0007
  • xinghuo0007
  • 2016年12月16日 09:55
  • 375

架构师之路:Python分布式爬虫Scrapy打造搜索引擎

架构师之路:Python分布式爬虫Scrapy打造搜索引擎 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感...
  • cadn_jueying
  • cadn_jueying
  • 2017年11月23日 20:58
  • 240

【实战\聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎项目笔记】第5章 scrapy爬取知名问答网站(2)

第5章 scrapy爬取知名问答网站 5-11 知乎spider爬虫逻辑的实现以及answer的提取 - 1 (15:54) 5-12 知乎spider爬虫逻辑的实现以及answer的提取 - 2...
  • qq_32616843
  • qq_32616843
  • 2017年11月15日 00:01
  • 179

Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站

Python分布式爬虫打造搜索引擎 一基础知识学习 爬取策略的深度优先和广度优先 爬虫网址去重策略 Python字符串编码问题解决 二伯乐在线爬取所有文章 初始化文件目录 scrapy项目初始化介绍 ...
  • qq_23079443
  • qq_23079443
  • 2017年06月29日 17:10
  • 6859

如何低成本搭建高性能分布式搜索引擎?

云栖社区 2017-05-25 17:37 更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 背景 最近,经常有客户咨询如何低成本搭建高性能的海量数...
  • u011277123
  • u011277123
  • 2017年05月27日 09:03
  • 322

【实战\聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎项目笔记】第5章 scrapy爬取知名问答网站(1)

第5章 scrapy爬取知名问答网站(1) 5-1 session和cookie自动登录机制 (20:10) 5-2 requests模拟登陆知乎 - 1 (13:32) 5-3 requests模...
  • qq_32616843
  • qq_32616843
  • 2017年11月14日 00:47
  • 179
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:4类的分布式搜索引擎
举报原因:
原因补充:

(最多只允许输入30个字)