快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新匍京1:Sphinx+MySQL全文检索架构与安装



媒介:

本文阐述的是一款颠末临盆情况查验的切切级数据全文检索(搜索引擎)架构。本文只列出前几章的内容节选,不供给全文内容。

在DELL PowerEdge 6850办事器(四颗64 位Inter Xeon MP 7110N处置澳门新匍京1惩罚器 / 8GB内存)、RedHat AS4 Linux操作系统、MySQL 5.1.26、MyISAM存储引擎、key_buffer=1024M情况下实测,单表1000万笔记录的数据量(这张MySQL表拥有int、datetime、varchar、text等类型的10多个字段,只有主键,无其它索引),用主键(PRIMARY KEY)作为WHERE前提进行SQL查询,速率异常之快,只消费0.01秒。

出自俄罗斯的开源全文搜索引擎软件 Sphinx ,单一索引最大年夜可包孕1亿笔记录,在1切切笔记录环境下的查询速率为0.x秒(毫秒级)。Sphinx创建索引的速率为:创建100万笔记录的索引只需3~4分钟,创建1000万笔记录的索引可澳门新匍京1以在50分钟内完成,而只包孕最新10万笔记录的增量索引,重修一次只需几十秒。

基于以上几点,我设计出澳门新匍京1了这套搜索引擎架构。在临盆情况运行了一周,效果异常不错。有光阴我会专为共同Sphinx搜索引擎,开拓一个逻辑简单、速率快、占用内存低、非表锁的MySQL存储引擎插件,用来代替MyISAM引擎,以办理MyISAM存储引擎在频繁更新操作时的锁表延迟问题。别的,散播式搜索技巧上已无任何问题。

一、搜索引擎架构设计:

1、搜索引擎架构图:

2、搜索引擎架构设计思路:

(1)、调用要领最简化:

只管即便方便前端Web工程师,只必要一条简单的S澳门新匍京1Q澳门新匍京1L语句“SELECT ... FROM myisam_table JOIN sphinx_table ON (sphinx_table.sphinx_id=myisam_table.id) WHERE query='...';”即可实现高效搜索。

(2)、创建索引、查询速率快:

①、Sphinx Search 是由俄罗斯人Andrew Aksyonoff 开拓的高机能全文搜索软件包,在GPL与商业协议双许可协议下发行。

Sphinx的特性:

Sphinx支持高速建立索引(可达10MB/秒,而Lucene建立索引的速率是1.8MB/秒)

高机能搜索(在2-4 GB的文本上搜索,匀称0.1秒内得到结果)

高扩展性(实测最高可对100GB的文本建立索引,单一索引可包孕1亿笔记录)

支持散播式检索

支持基于短语和基于统计的复合结果排序机制

支持随意率性数量的文件字段(数值属性或全文检索属性)

支持不合的搜索模式(“完全匹配”,“短语匹配”和“任一匹配”)

支持作为Mysql的存储引擎

②、经由过程国外《High Performance MySQL》专家组的测试可以看出,根据主键进行查询的类似“SELECT ... FROM ... WHERE id = ...”的SQL语句(此中id为PRIMARY KEY),每秒钟能够处置惩罚10000次以上的查询,而通俗的SELECT查询每秒只能处置惩罚几十次到几百次:

③、Sphinx不认真文本字段的存储。假设将数据库的id、date、title、body字段,用sphinx建立搜索索引。根据关键字、光阴、种别、范围等信息查询一下sphinx,sphinx只会将查询结果的ID号等非文本信息奉告我们。要显示title、body等信息,还必要根据此ID号去查询MySQL数据库,或者从Memcachedb等其他的存储中取得。安装SphinxSE作为MySQL的存储引擎,将MySQL与Sphinx结合起来,是一种便捷的措施。

(6)、中文分词词库:

我根据“百度早期中文分词库”+“搜狗拼音输入法细胞词库”+“LibMMSeg高频字库”+... 综合收拾成一份中文分词词库,出于某些斟酌暂不供给。你可以应用LibMMSeg自带的中文分词词库。

二、MySQL+Sphinx+SphinxSE安装步骤:

1、安装python支持(以下针对CentOS系统,其他Linux系统请应用响应的措施安装)

yum install -y python python-devel

2、编译安装LibMMSeg(LibMMSeg是为Sphinx全文搜索引擎设计的中文分词软件包,其在GPL协议下发行的中文分词法,采纳Chih-Hao Tsai的MMSEG算法。LibMMSeg在本文顶用来天生中文分词词库。)

以下压缩包“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.zip

tar zxvf mmseg-0.7.3.tar.gz

cd mmseg-0.7.3/

./configure

make

make install

cd ../

3、编译安装MySQL 5.1.26-rc、Sphinx、SphinxSE存储引擎

wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.26-rc.tar.gz/from/http://mirror.x10.com/mirror/mysql/

tar zxvf mysql-5.1.26-rc.tar.gz

tar zxvf sphinx-0.9.8-rc2.tar.gz

cd sphinx-0.9.8-rc2/

patch -p1 < ../sphinx-0.98rc2.zhcn-support.patch

patch -p1 < ../fix-crash-in-excERPts.patch

cp -rf mysqlse ../mysql-5.1.26-rc/storage/sphinx

cd ../

cd mysql-5.1.26-rc/

sh BUILD/autorun.sh

./configure --with-plugins=sphinx --prefix=/usr/local/mysql-search/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile

make && make install

cd ../

cd sphinx-0.9.8-rc2/

CPPFLAGS=-I/usr/include/python2.4

LDFLAGS=-lpython2.4

./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql-search

make

make install

cd ../

mv /usr/local/sphinx/etc/sphinx.conf /usr/local/sphinx/

etc/sphinx.conf.old

第二章第3节之后的正文内容不予公布,全文的目录如下(共24页):

您可能还会对下面的文章感兴趣: