window环境下,php+sphinx+coreseek实现简单的中文全文搜索

时间:2021-01-28 21:34:10

就以我个人理解来说,sphinx其实是介于客户端和mysql之间的一个索引表,把数据库的没一条记录假设为文档,那么这个索引表其实保存的就是这条记录的关键词及其对应的文档id

1.sphinx的安装

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

下载地址http://pecl.php.net/package/sphinx,找到对应的版本下载好即可

下载完之后,把文件解压后把php_sphinx.dll和php_sphinx.pdb文件复制到本地环境的ext文件夹下,在php.ini文件加上extension=php_sphinx.dll,重启Apache

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

输出phpInfo(),能看到sphinx的扩展库

2.coreseek

为什么要安装sphinx呢?其实因为coreseek就是sphinx+mmseg(中文分词技术),使用coreseek其实就是在调用sphinx

下载地址http://www.coreseek.cn/news/14/54/

选择需要的版本下载即可

解压文件后,把文件夹内的文件复制到D盘下的coreseek文件夹(不需要特定路径,只要能找到就好)

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

在ect目录下找到csft_mysql.conf文件,将其复制到bin目录下,并重命名为scft.conf(coreseek默认读取名为scft.conf的配置文件,不过配置文件能修改)

打开scft.conf配置文件,修改配置

本文以test2数据库中的test表为例,其字段信息分别是id,title,content

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

先看源定义,sql_host,sql_user,sql_pass等这些简单的配置就不说了,sql_query是你定义全文索引时需要被索引的字段,sql_query_info定义需要从哪个数据表读取源数据信息

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

再来看看主索引文件,path是保存索引的位置,charset_dictpath是你读取分词文件的位置

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

其余的indexer(生成索引),searchd(开启服务)等配置,只要改一下相应的文件路径即可,比如log等参数

3.开启服务

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

打开cmd窗口,进入到coreseek的bin目录下,运行indexer --all命令,生成索引

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

之后开启输入searchd.exe命令开启服务

3.结合php使用进行全文搜索

window环境下,php+sphinx+coreseek实现简单的中文全文搜索这是插入的测试数据

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

php的测试代码

window环境下,php+sphinx+coreseek实现简单的中文全文搜索

测试结果

coreseek的配置除了多了个中文分词的配置之外,其余和sphinx的配置一样,所以这里就不再说明sphinx的配置了,至于关于sphinx更多的高级用法,可以去查看php文档的sphinx模块