Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,
它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。
Sphinx特别为一些脚本语言设计搜索API接口。
特性:
高速索引;
高速搜索 ;
高可用性 ;
提供良好的相关性排名 支持分布式搜索;
提供文档摘要生成;
提供从MySQL内部的插件式存储引擎上搜索;
支持每个文档多个全文检索域;
支持每个文档多属性;
支持断词;
支持单字节编码与UTF-8编码;
Sphinx在mysql上的应用有两种方式
①、采用API调用,如使用PHP、java等的API函数或方法查询。优点是可不必对mysql重新编译,服务端进程“低耦合”,且程序可灵活、方便的调用;
缺点是如已有搜索程序的条件下,需修改部分程序。推荐程序员使用。
②、使用插件方式(sphinxSE)把sphinx编译成一个mysql插件并使用特定的sql语句进行检索。其特点是,在sql端方便组合,且能直接返回数据给客户端
不必二次查询(注),在程序上仅需要修改对应的sql,但这对使用框架开发的程序很不方便,比如使用了ORM。另外还需要对mysql进行重新编译,且需要mysql-5.1以上版本
支持插件存储。系统管理员可使用这种方式
1.下载
这里使用的是sphinx-2.2.11-release-win64
2.下载后解压在 E:\sphinx 目录下
在mysql新建数据库test,导入example.sql
3.建立配置文件
复制 E:\sphinx\sphinx.min.conf.in 到 E:\sphinx\bin\sphinx.conf
修改sphinx.conf必要项
(1)mysql数据库连接项;
(2)@CONFDIR@替换成实际目录,然后手动建立好该目录及子目录,这里为
E:\sphinx\data # 索引数据目录
E:\sphinx\log # 进程文件目录
4. 安装Sphinx到Windows服务
searchd.exe --install -c sphinx.conf --servicename SphinxSearch
5. PHP客户端测试
进入E:\sphinx\api目录,sphinx提供了php, python , ruby , c等客户端代码,如果Php程序员想访问Sphinx,包含sphinxapi.php就可以了 ,test.php是Sphinx提供的访问例子。
在测试之前,需要生成索引文件到E:\shpinx\data目录,进入E:\sphinx\bin执行
indexer.exe -c sphinx.conf --all
运行成功后必须重新启动Sphinx才能生效。
在启用服务的时候提示”发生系统错误1067″,查了下资料,这需要在安装服务的时候指定配置文件的路径
因为系统中已存在searchd服务所以需要先删除,再重新install
重启后执行test.php
php test.php test
出现了错误Query failed: connection to localhost:9312 failed (errno=10060, msg=由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
如果本地使用IPV4、IPV6双栈网络(windows 7),默认localhost 指向IPV6
改为:127.0.0.1就好了
修改test.php的host
$host = "127.0.0.1";
再执行test.php
searchd的启动与停止
net start/stop searchd