1.1) 【搜索引擎的观点】
搜索引擎(Search Engine)是指根据一定的策略、利用特定的打算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户供应检索做事,将用户检索干系的信息展示给用户的系统。搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、凑集式搜索引擎、门户搜索引擎与免费链接列表等。
组成: 一个搜索引擎由搜索器 、索引器 、检索器 和用户接口 四个部分组成。

1.2)【sphinx是什么】
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以供应比数据库本身更专业的搜索功能,使得运用程序更随意马虎实现专业化的全文检索。Sphinx特殊为一些脚本措辞设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。
1.3)【sphinx的特点&架构】
1️⃣快速创建索引:3分钟旁边即可创建近100万条记录的索引,并且采取了增量索引的办法,重修索引非常迅速。
2️⃣闪电般的检索速率:只管是1千万条的大数据量,查询数据的速率也在毫秒级以上,2-4G的文本量中均匀查询速率不到0.1秒。
3️⃣为很多脚本措辞设计了检索API,如PHP,Python,Perl,Ruby等,因此你可以在大部分编程运用中很方便地调用Sphinx的干系接口。
4️⃣为MySQL设计了一个存储引擎插件,因此如果你在MySQL上利用Sphinx,那切实其实就方便到家了。
5️⃣支持分布式搜索,可以横向扩展系统性能。
php+mysql+sphinx架构图
1.4)【sphinx的事情流程】
sphinx的事情流程
流程图阐明:
Database:数据源,是Sphinx做索引的数据来源。由于Sphinx是无关存储引擎、数据库的,以是数据源可以是MySQL、PostgreSQL、XML等数据。
Indexer:索引程序,从数据源中获取数据,并将数据天生全文索引。可以根据需求,定期运行Indexer达到定时更新索引的需求。
Searchd:Searchd直接与客户端程序进行对话,并利用Indexer程序构建好的索引来快速地处理搜索查询。
APP:客户端程序。吸收来自用户输入的搜索字符串,发送查询给Searchd程序并显示返回结果。
二、sphinx的安装
2.1)【sphinx在mysql上的运用】
Sphinx在mysql上的运用有两种办法:
①、采取API调用,如利用PHP、java等的API函数或方法查询。优点是可不必对mysql重新编译,做事端进程“低耦合”,且程序可灵巧、方便的调用;
缺陷是如已有搜索程序的条件下,需修正部分程序。推举程序员利用。
②、利用插件办法(sphinxSE)把sphinx编译成一个mysql插件并利用特定的sql语句进行检索。其特点是,在sql端方便组合,且能直接返回数据给客户端。不必二次查询(注),在程序上仅须要修正对应的sql,但这对利用框架开拓的程序很未便利,比如利用了ORM。其余还须要对mysql进行重新编译,且须要mysql-5.1以上版本。
#下载最新稳定版
wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
tar xzvf sphinx-0.9.9.tar.gz
cd sphinx-0.9.9
./configure --prefix=/usr/local/sphinx/ --with-mysql --enable-id64
make
make install
2.2)【安装中文分词插件】
1️⃣ 中文分词:中文的全文检索和英文等latin系列不一样,后者是根据空格等分外字符来断词,而中文是根据语义来分词。目前大多数数据库尚未支持中文全文检索,如Mysql。故,海内涌现了一些Mysql的中文全文检索的插件,做的比较好的有hightman的中文分词。Sphinx如果须要对中文进行全文检索,也得须要一些插件来补充。个中我知道的插件有 coreseek 和 sfc 。
2️⃣升级autoconf:这里以coreseek为例子,由于coreseek须要autoconf 2.64以上版本,因此须要升级autoconf,不然会报错。从http://download.chinaunix.net/download.php?id=29328&ResourceID=648下载autoconf-2.64.tar.bz2,安装方法如下:
tar -jxvf autoconf-2.64.tar.bz2
cd autoconf-2.64
./configure
make
make install
3️⃣安装coreseek:
wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
4️⃣安装mmseg(coreseek所利用的词典)
tar xzvf coreseek-3.2.14.tar.gz
cd mmseg-3.2.14
./bootstrap #输出的warning信息可以忽略,如果涌现error则须要办理
./configure --prefix=/usr/local/mmseg3
make && make install
cd ..
5️⃣安装coreseek(sphinx)
cd csft-3.2.14
sh buildconf.sh #输出的warning信息可以忽略,如果涌现error则须要办理
./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
make && make install
cd ..
6️⃣测试mmseg分词和coreseek搜索
备注:须要预先设置好字符集为zh_CN.UTF-8,确保精确显示中文,我的系统字符集为en_US.UTF-8也是可以的。
cd testpack
cat var/test/test.xml #此时该当精确显示中文
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
/usr/local/coreseek/bin/indexer -c etc/csft.conf --all
/usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
此时精确的该当返回
words:
1. '网络': 1 documents, 1 hits
2. '搜索': 2 documents, 5 hits
三、sphinx在php中的利用
这里给一个demo:
sphinx搜索的一个例子