用sphinx轻松搞定方便管理的多节点过亿级数据搜索
概述
来自俄罗斯的开源全文搜索引擎软件Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级),实测千万级数据在0.0X秒和0.00X秒占大多数。 Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,实测30W线上复杂的blog数据需要5分钟,创建1000万条记录的索引可以在50分钟内完成,实测时间比这个更长得多,而只包含最新10万条记录的增量索引,重建一次只需几十秒,实测十万条在一分钟不到的时间。 Sphinx 是一个基于 GPL 2 协议颁发的免费开源的全文搜索引擎.它是专门为更好的整合脚本语言和SQL数据库而设计的.当前内置的数据源支持直接从连接到的 MySQL 或 PostgreSQL 获取数据, 或者你可以使用 XML 通道结构(XML pipe mechanism , 一种基于 Sphinx 可识别的特殊xml格式的索引通道) 。
sphinx安装
配置多节点协同工作
第一点,原理
在sphinx.conf中可以配置index段落里的local和agent两个参数,local = blog_1表示使用本地索引名为blog_1的索引,agent = 10.1.1.1:3312:blog_2表示使用10.1.1.1这个机器的3312端口上服务的blog_2索引。这两个参数均可在此段落中重复出现。
利用这两个参数,可进行节点与节点间的配置。如图1所示,一个searchd服务在接到请求时两种使用索引的示意图。
图1 一个searchd服务在接到请求时两种使用索引的示意图
第二点,架构
利用agent参数,可以灵活配置去代理取满足搜索条数的超时时间等等。
如图2,只需要将索引灵活分布,各自除了自己的local索引以外,全部连成相互的agent,使得别的节点也可以得到自己的索引搜索结果,以此得到分布式的处理结果。
图2 一个简单的分布式搜索的例子
第三点,性能
分布索引的情况下,实测千万数据量,大致在500qps左右,没有做容灾的方案,如果想容灾,可以考虑将索引做成在某些节点上重复。总得来说,性能还算可以,更具体的架构方案,可能要和具体的业务来分布效果会更好。
建议继续学习:
- 怎样用好Google进行搜索 (阅读:14782)
- 淘宝搜索:定向抓取网页技术漫谈 (阅读:8271)
- 简析搜索引擎中网络爬虫的搜索策略 (阅读:6052)
- 几种常见的基于Lucene的开源搜索解决方案对比 (阅读:4697)
- 用Sphinx快速搭建站内搜索功能 (阅读:4475)
- 基于用户行为分析的搜索引擎自动性能评价 (阅读:4462)
- 互联网网站的反爬虫策略浅析 (阅读:4194)
- 附近地点搜索初探 (阅读:4195)
- Xapian搜索体系结构 (阅读:4089)
- 百度搜索URL参数解析 (阅读:4151)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:54chen 来源: 五四陈科学院-坚信科学,分享技术
- 标签: Sphinx 搜索
- 发布时间:2010-07-14 09:53:06
- [69] IOS安全–浅谈关于IOS加固的几种方法
- [68] Twitter/微博客的学习摘要
- [66] 如何拿下简短的域名
- [64] android 开发入门
- [63] Go Reflect 性能
- [63] find命令的一点注意事项
- [62] 流程管理与用户研究
- [61] Oracle MTS模式下 进程地址与会话信
- [60] 图书馆的世界纪录
- [60] 读书笔记-壹百度:百度十年千倍的29条法则