第1课:邂逅Sphinx

Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS 的原生支持)

Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。

Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。

安装:
先从官方网站下载压缩包
[root@localhost ~]# yum install -y mysql mysql-devel
[root@localhost ~]# yum install -y automake autoconf
[root@localhost ~]# cd /root
[root@localhost src]# tar zxvf sphinx-2.2.6.tar.gz
[root@localhost local]# cd sphinx-2.2.6
[root@localhost sphinx-2.2.6]# ./configure –prefix=/usr/local/sphinx
[root@localhost sphinx-2.2.6]# make && make install

安装完毕后查看一下/usr/local/sphinx下是否有bin etc var三个目录,如有,表示安装成功

启动sphinx  /usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf
关闭sphinx可以用ps aux|grep sphinx 找到sphinx进程,然后直接kill -9  进程号(多个用空格分开)

Sphinx在mysql上的应用有两种方式:
1.采用API调用,如使用PHP、java等的API函数或方法查询。优点是可不必对mysql重新编译,服务端进程"低耦合",且程序可灵活、方便的调用;缺点是如已有搜索程序的条件下,需修改部分程序。推荐程序员使用。
2.使用插件方式(sphinxSE)把sphinx编译成一个mysql插件并使用特定的sql语句进行检索。其特点是,在sql端方便组合,且能直接返回数据给客户端。不必二次查询,在程序上仅需要修改对应的sql,但这对使用框架开发的程序很不方便,比如使用了ORM。另外还需要对mysql进行重新编译,且需要mysql-5.1以上版本支持插件存储。

'sphinx通常会配合一些分词软件进行搜索,市场上也有一些集成的软件,比如coreseek,对中文的支持不错,但是因为版本很久不更新,如果要求不高的项目,可以使用,一般不推荐使用,可以网上搜索开源分词软件,和sphinx进行关联配置'


试着做做下面的题目吧

    1:Sphinx是什么
    2:sphinx优点说法错误的是
    3:实时索引的说法哪个是对的
打赏  如对你有帮助,请我喝杯咖啡吧!