1、软件下载
Sphinx 选source tarball。
2、安装Sphinx
创建安装目录,并授权
$ sudo mkdir /usr/local/sphinx
$ sudo chmod -R 777 /usr/local/sphinx
安装依赖包
$ sudo apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev
安装
$ tar zxvf sphinx-2.1.9-release.tar.gz
$ cd sphinx-2.1.9-release
$ sudo ./configure --prefix=/usr/local/sphinx //prefix 指定安装目录,如果要安装mysql 加上 --with-mysql
$ sudo make && make install
关于sphinx的三个命令,目录是/usr/local/sphinx/bin
indexer //生成索引
search //搜索
searchd //启动sphinx
3、配置sphinx并使用
生成配置文件
$ cd /usr/local/sphinx/etc
$ sudo cp sphinx.conf.dist sphinx.conf
将etc目录下example.sql文件导入到mysql test数据库。 更改sphinx.conf,主要更改myql用户名和密码
生成索引
$ sudo /usr/local/sphinx/bin/indexer --all
如果爆出以下错误
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
然后重新创建索引。 执行查询
$ sudo /usr/local/sphinx/bin/search test
可能会爆出以下错误
index 'test1': search error: query too complex, not enough stack (thread_stack=-2665032K or higher required).
注释掉配置文件中下面这行,然后重试
#sql_query_info = SELECT * FROM documents WHERE id=$id
后台启动searchd的命令
$ sudo /usr/local/sphinx/bin/searchd
然后运行php文件test.php
$ sudo php /usr/local/sphinx/api/test.php test
参考查询结果
Query 'test ' retrieved 3 of 3 matches in 0.000 sec.
Query stats:
'test' found 10 times in 6 documents
Matches:
1. doc_id=1, weight=101, group_id=1, date_added=2014-08-27 12:15:20
2. doc_id=2, weight=101, group_id=1, date_added=2014-08-27 12:15:20
3. doc_id=4, weight=1, group_id=2, date_added=2014-08-27 12:15:20
4、安转Coreseek
$ tar coreseek-3.2.14.tar.gz
会解压出:csft-3.2.14 mmseg-3.2.14 README.txt testpack 先来安装
$ cd mmseg3.2.14
$ ./configure --prefix=/usr/local/mmseg
注:需提前创建mmseg文件夹并授权777 可能会爆出如下错误
$ 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
然后重新安装
$ sudo ./configure --prefix=/usr/local/mmseg
$ sudo make && make install
安装coreseek
$ cd csft-3.2.14
$ sudo sh buildconf.sh
$ sudo ./configure --prefix=/usr/local/coreseek --with-mmseg=/usr/local/mmseg/ --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/
$ sudo make && make install
生成配置文件
$ cd /usr/local/coreseek/etc
$ sudo cp sphinx.conf.dist csft.conf
这里同样把example.sql导入数据库,然后修改csft.conf
5、安装php扩展sphinx
$ sudo pecl install sphinx
可能会爆出如下错误:
$ configure: error: Cannot find libsphinxclient headers
需要安装libsphinxclient
$ cd coreseek-3.2.14/csft-3.2.14/api/libsphinxclient/
$ ./configure --prefix=/usr/local/libsphinxclient
$ sudo make && make install
注:同样需要提前创建libsphinxclient文件夹并授权。
然后重新安装,注意安装过程中需要填写libsphinxclient安装目录。
安装完成后配置php,然后重启apache或nginx
$ echo "extension=sphinx.so" | sudo tee /etc/php5/conf.d/sphinx.ini
$ sudo service apache2 restart
$ sudo service nginx reload
6、使用sphinx需要的东西
1、要有数据,数据库或其他类型的都可以。
2、建立sphinx配置文件。
3、生成索引。
4、启动searchd进程,默认端口9312。
5、用脚本语言(python,php)去连接sphinx服务。
7、启动searchd
$ sudo /usr/local/sphinx/bin/searchd
searchd 命令参数介绍:
-c 指定配置文件
–stop 停止服务
–pidfile 用来显式指定一个 PID 文件
-p 指定端口
如果你的gcc版本在4.7以上,编译的时候可能会因为sphinx的一个bug报错
: error: ‘ExprEval’ was not declared in this scope, a
sphinxexpr.cpp:1746:43: error: ‘ExprEval’ was not declared in this scope, and no declarations were found by argument-wget -O - http://blog.atime.me/static/resource/sphinxexpr-gcc4.7.patch.gz | gzip -d - | patch -p0