看了这篇文章:http://www.tuicool.com/articles/IvMZJz
$ 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 指定端口
http://blog.csdn.net/jcjc918/article/details/39032689
Sphinx/Coreseek 4.1 执行 buildconf.sh 报错,无法生成configure文件
之前在安装 coorseek 的时候,遇到了一些错误,在官网根本看不到解决方案,最后 google 在一个大牛博客的评论区找到了解决方法,顿时把膝盖献上去了~~
整理到这里是为了方便一些人找到,长城防火墙毕竟让 google 不是那么友好了 %>_<% 不过大牛的博客还是上得了的:传送门
错误现象:执行 buildconf.sh 报错,无法生成configure文件
提示的主要错误为:
- libstemmer_c/mkinc.mak:10: warning: source file 'runtime/utilities.c' is in a subdirectory,
- libstemmer_c/mkinc.mak:10: but option 'subdir-objects' is disabled
- libstemmer_c/Makefile.am:3: 'libstemmer_c/mkinc.mak' included from here
- libstemmer_c/mkinc.mak:10: warning: source file 'libstemmer/libstemmer.c' is in a subdirectory,
- libstemmer_c/mkinc.mak:10: but option 'subdir-objects' is disabled
- libstemmer_c/Makefile.am:3: 'libstemmer_c/mkinc.mak' included from here
- /usr/local/share/automake-1.14/am/library.am: warning: 'libstemmer.a': linking libraries using a non-POSIX
- /usr/local/share/automake-1.14/am/library.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
- libstemmer_c/Makefile.am:2: while processing library 'libstemmer.a'
- /usr/local/share/automake-1.14/am/library.am: warning: 'libsphinx.a': linking libraries using a non-POSIX
- /usr/local/share/automake-1.14/am/library.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
- src/Makefile.am:14: while processing library 'libsphinx.a'
看起来非常多其实就是两个:1.but option 'subdir-objects' is disabled 2. archiver requires 'AM_PROG_AR' in 'configure.ac'
解决方案:
1. 在 csft-4.1/buildconf.sh 文件中,查找
- && aclocal \
后加上
- && automake --add-missing \
2. 在 csft-4.1/configure.ac 文件中,查找:
- AM_INIT_AUTOMAKE([-Wall -Werror foreign])
- AM_INIT_AUTOMAKE([-Wall foreign])
查找:
- AC_PROG_RANLIB
- AM_PROG_AR
3. 最后,在 csft-4.1/src/sphinxexpr.cpp 文件中, 替换所有:
- T val = ExprEval ( this->m_pArg, tMatch );
- T val = this->ExprEval ( this->m_pArg, tMatch );
如果报G++ not found ,就apt-get install g++.