ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:88.50KB ,
资源ID:4408678      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-4408678.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计.doc)为本站会员(tkhy51908)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计.doc

1、文章作者:张宴 本文版本:v1.0 最后修改:2008.07.27 转载请注明原文链接:http:/ DELL PowerEdge 6850 服务器(四颗 64 位 Inter Xeon MP 7110N 处理器 / 8GB 内存) 、RedHat AS4 Linux 操作系统、MySQL 5.1.26、MyISAM 存储引擎、key_buffer=1024M环境下实测,单表 1000 万条记录的数据量(这张 MySQL 表拥有int、datetime、varchar、text 等类型的 10 多个字段,只有主键,无其它索引) ,用主键(PRIMARY KEY)作为 WHERE 条件进行 SQ

2、L 查询,速度非常之快,只耗费 0.01 秒。出自俄罗斯的开源全文搜索引擎软件 Sphinx,单一索引最大可包含 1 亿条记录,在 1千万条记录情况下的查询速度为 0.x 秒(毫秒级) 。Sphinx 创建索引的速度为:创建 100 万条记录的索引只需 34 分钟,创建 1000 万条记录的索引可以在 50 分钟内完成,而只包含最新 10 万条记录的增量索引,重建一次只需几十秒。基于以上几点,我设计出了这套搜索引擎架构。在生产环境运行了一周,效果非常不错。有时间我会专为配合 Sphinx 搜索引擎,开发一个逻辑简单、速度快、占用内存低、非表锁的 MySQL 存储引擎插件,用来代替 MyISAM

3、 引擎,以解决 MyISAM 存储引擎在频繁更新操作时的锁表延迟问题。另外,分布式搜索技术上已无任何问题。一、搜索引擎架构设计:1、搜索引擎架构图:2、搜索引擎架构设计思路:(1)、调用方式最简化:尽量方便前端 Web 工程师,只需要一条简单的 SQL 语句“SELECT . FROM myisam_table JOIN sphinx_table ON (sphinx_table.sphinx_id=myisam_table.id) WHERE query=.;”即可实现高效搜索。(2)、创建索引、查询速度快: 、Sphinx Search 是由俄罗斯人 Andrew Aksyonoff 开发

4、的高性能全文搜索软件包,在 GPL 与商业协议双许可协议下发行。Sphinx 的特征:Sphinx 支持高速建立索引(可达 10MB/秒,而 Lucene 建立索引的速度是 1.8MB/秒)高性能搜索(在 2-4 GB 的文本上搜索,平均 0.1 秒内获得结果)高扩展性(实测最高可对 100GB 的文本建立索引,单一索引可包含 1 亿条记录)支持分布式检索支持基于短语和基于统计的复合结果排序机制支持任意数量的文件字段(数值属性或全文检索属性)支持不同的搜索模式(“完全匹配”, “短语匹配” 和“任一匹配” )支持作为 Mysql 的存储引擎 、通过国外 High Performance MyS

5、QL专家组的测试可以看出,根据主键进行查询的类似“SELECT . FROM . WHERE id = .”的 SQL 语句(其中 id 为 PRIMARY KEY) ,每秒钟能够处理 10000 次以上的查询,而普通的 SELECT 查询每秒只能处理几十次到几百次: 、Sphinx 不负责文本字段的存储。假设将数据库的 id、date、title 、body 字段,用sphinx 建立搜索索引。根据关键字、时间、类别、范围等信息查询一下 sphinx,sphinx 只会将查询结果的 ID 号等非文本信息告诉我们。要显示 title、body 等信息,还需要根据此ID 号去查询 MySQL 数

6、据库,或者从 Memcachedb 等其他的存储中取得。安装 SphinxSE 作为 MySQL 的存储引擎,将 MySQL 与 Sphinx 结合起来,是一种便捷的方法。创建一张 Sphinx 类型表,将 MyISAM 表的主键 ID 和 Sphinx 表的 ID 作一个 JOIN 联合查询。这样,对于 MyISAM 表来所,只相当于一个 WHERE id=.的主键查询,WHERE后的条件都交给 Sphinx 去处理,可以充分发挥两者的优势,实现高速搜索查询。(3)、按服务类型进行分离:为了保证数据的一致性,我在配置 Sphinx 读取索引源的 MySQL 数据库时,进行了锁表。Sphinx

7、 读取索引源的过程会耗费一定时间,由于 MyISAM 存储引擎的读锁和写锁是互斥的,为了避免写操作被长时间阻塞,导致数据库同步落后跟不上,我将提供“搜索查询服务”的和提供“索引源服务” 的 MySQL 数据库进行了分开。监听 3306 端口的 MySQL 提供“搜索查询服务” ,监听 3406 端口的 MySQL 提供“ 索引源服务 ”。(4)、 “主索引增量索引”更新方式:一般网站的特征:信息发布较为频繁;刚发布完的信息被编辑、修改的可能性大;两天以前的老帖变动性较小。基于这个特征,我设计了 Sphinx 主索引和增量索引。对于前天 17:00 之前的记录建立主索引,每天凌晨自动重建一次主索

8、引;对于前天 17:00 之后到当前最新的记录,间隔 3分钟自动重建一次增量索引。(5)、 “Ext3 文件系统tmpfs 内存文件系统”相结合:为了避免每 3 分钟重建增量索引导致磁盘 IO 较重,从而引起系统负载上升,我将主索引文件创建在磁盘,增量索引文件创建在 tmpfs 内存文件系统“/dev/shm/” 内。 “/dev/shm/”内的文件全部驻留在内存中,读写速度非常快。但是,重启服务器会导致“/dev/shm/”内的文件丢失,针对这个问题,我会在服务器开机时自动创建“/dev/shm/”内目录结构和 Sphinx增量索引。(6)、中文分词词库:我根据“自整理的中文分词库”“ 搜狗

9、拼音输入法细胞词库 ”“LibMMSeg 高频字库”. 综合整理成一份中文分词词库,出于某些考虑暂不提供。你可以使用 LibMMSeg 自带的中文分词词库。二、MySQL+Sphinx+SphinxSE 安装步骤:1、安装 python 支持(以下针对 CentOS 系统,其他 Linux 系统请使用相应的方法安装)yum install -y python python-devel2、编译安装 LibMMSeg(LibMMSeg 是为 Sphinx 全文搜索引擎设计的中文分词软件包,其在 GPL 协议下发行的中文分词法,采用 Chih-Hao Tsai 的 MMSEG 算法。LibMMSeg

10、 在本文中用来生成中文分词词库。 )以下压缩包“sphinx-0.9.8-rc2-chinese.zip”中包含 mmseg-0.7.3.tar.gz、sphinx-0.9.8-rc2.tar.gz 以及中文分词补丁。下载文件点击这里下载文件unzip sphinx-0.9.8-rc2-chinese.ziptar zxvf mmseg-0.7.3.tar.gzcd mmseg-0.7.3/./configuremakemake installcd /3、编译安装 MySQL 5.1.26-rc、Sphinx、SphinxSE 存储引擎wget http:/ zxvf mysql-5.1.26

11、-rc.tar.gztar zxvf sphinx-0.9.8-rc2.tar.gzcd sphinx-0.9.8-rc2/patch -p1 /sphinx-0.98rc2.zhcn-support.patchpatch -p1 /fix-crash-in-excerpts.patchcp -rf mysqlse /mysql-5.1.26-rc/storage/sphinxcd /cd mysql-5.1.26-rc/sh BUILD/autorun.sh./configure -with-plugins=sphinx -prefix=/usr/local/mysql-search/ -e

12、nable-assembler -with-extra-charsets=complex -enable-thread-safe-client -with-big-tables -with-readline -with-ssl -with-embedded-server -enable-local-infilemake & make installcd /cd sphinx-0.9.8-rc2/CPPFLAGS=-I/usr/include/python2.4LDFLAGS=-lpython2.4./configure -prefix=/usr/local/sphinx -with-mysql=/usr/local/mysql-searchmakemake installcd /mv /usr/local/sphinx/etc/sphinx.conf /usr/local/sphinx/etc/sphinx.conf.old第二章第 3 节之后的正文内容不予公布,全文的目录如下(共 24 页):

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报