coreseek mysql.sock_linux下编译安装Sphinx、中文分词coreseek及PHP的sphinx扩展

Linux环境为:CentOS5.5、Ubuntu12.04

1、软件下载

sphinx-2.1.3

coreseek-4.1

2、安装 sphinxtar zxvf sphinx-2.1.3.tar.gz //解压sphinx包

cd sphinx-2.1.3

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

--prefix:指定 sphinx 的安装路径

--with-mysql:指定 mysql 安装路径sudo make && make install

编译并安装

安装成功之后,sphinx 会形成三个命令:indexer 创建索引命令

searchd 启动进程命令

search 命令行搜索命令

注:上述命令默认在/usr/local/sphinx/bin目录下

3、配置 sphinx及使用cd /usr/local/sphinx/etc

进入 sphinx 的 etc 目录下sudo cp sphinx.conf.dist sphinx.conf

拷贝一份配置文件,并且命名为 sphinx.conf。

将该目录下的example.sql文件导入本地数据库名为test的数据库中。

修改配置信息,将其中数据库连接信息修改为你的本地数据库信息。

然后使用如下命令导入数据并生成索引:$ cd /usr/local/sphinx/etc

$ sudo /usr/local/sphinx/bin/indexer --all

如果执行indexer命令报错:ERROR: index 'test1stemmed': sql_connect: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

则可能是因为mysql.sock的位置问题,在本机中,改位置是/tmp/mysql.sock(与安装mysql时设置有关),在sphinx.conf中取消这一行的注释即可(去掉前面的#号):#sql_sock = /tmp/mysql.sock

再次执行上述indexer命令,一切正常。

执行查询的话可以使用如下指令:$ cd /usr/local/sphinx/etc

$ sudo /usr/local/sphinx/bin/search test

在执行search搜索过程中可能报错:index 'test1': search error: query too complex, not enough stack (thread_stack=-2665032K or higher required).

我试着在sphinx.conf中的searchd模块中修改thread_stack的值,但没有解决问题,后来注释掉source src1中的如下这行#sql_query_info = SELECT * FROM documents WHERE id=$id

再执行search命令,就OK了。

后台启动sphinx使用如下指令:$ cd /usr/local/sphinx/etc

$ sudo /usr/local/sphinx/bin/searchd

使用php脚本执行搜素命令,可使用如下指令:$ cd sphinx/api

$ php test.php test

输入结果如下:Query 'test ' retrieved 3 of 3 matches in 0.022 sec.

Query stats:

'test' found 10 times in 6 documents

Matches:

1. doc_id=1, weight=101, group_id=1, date_added=2014-01-20 10:07:37

2. doc_id=2, weight=101, group_id=1, date_added=2014-01-20 10:07:37

3. doc_id=4, weight=1, group_id=2, date_added=2014-01-20 10:07:37

4、安装 coreseektar zxvf coreseek-4.1.tar.gz

解压会出现两个目录:csft-4.1、mmseg-3.2.14

先安装 mmsegcd mmseg-3.2.14/

./configure --prefix=/usr/local/mmseg

编译如果出现错误:“config.status: error: cannot find input file: src/Makefile.in”

解决方案:sudo apt-get install automake

aclocal

libtoolize --force 我运行后有一个错误,没管它。

automake --add-missing

autoconf

autoheader

make clean

./configure --prefix=/usr/local/mmseg

make

sudo make install

安装 csft(coreseek)cd csft-4.1/

sh buildconf.sh

./configure --prefix=/usr/local/coreseek --with-mysql=/usr/local/mysql/ --with-mmseg=/usr/local/mmseg/ --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/

sudo make && make install

安装完成之后和sphinx安装后一样,需要导入coreseek/etc/example.sql文件到本地数据库,然后拷贝sphinx.conf.dist到csft.conf,修改其中数据库用户名及密码,测试出错和sphinx中出错解决办法一样。

使用 sphinx 需要做以下几件事

1.有数据;

2.建立 sphinx 配置文件;

3.生成索引;

4.启动 searchd 服务进程,默认是9312

5.用 PHP 去连接 sphinx 服务

启动 sphinxcd /usr/local/coreseek/bin/

./searchd

启动命令

searchd 命令参数介绍:

-c 指定配置文件

--stop 停止服务

--pidfile 用来显式指定一个 PID 文件

-p 指定端口

5、php 安装 sphinx 扩展sudo pecl install sphinx

如果出现错误:“configure: error: Cannot find libsphinxclient headers”

解决方法:cd coreseek-4.1/csft-4.1/api/libsphinxclient/

./configure --prefix=/usr/local/libsphinxclient

sudo make && make install

解决完毕!

回去接着执行./configure --with-php-config=/usr/local/php/bin/php-config --with-sphinx=/usr/local/libsphinxclient

sudo make && make install

出现类似“Installing shared extensions: /usr/lib/php5/20090626/sphinx.so”,表示成功。

可以进入该目录下会发现生成了一个 sphinx.so 文件

在 php.ini 中加载该 so 文件

extension=/usr/lib/php5/20090626/sphinx.so

重启 apache ,phpinfo() 中出现这个表明成功。

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值