一、首先需要在服务器上安装sphinx
在Windows上安装sphinx
1.下载支持mysql的包 http://www.sphinxsearch.com/downloads/sphinx-0.9.9-win32.zip
2.解压缩 sphinx-0.9.9-win32.zip 到 D:\sphinx
3.安装sphinx服务,在命令行执行命令
D:\sphinx\searchd --install --config
d:\sphinx\sphinx.conf --servicename SphinxSearch
英文参照:http://www.sphinxsearch.com/docs ... #installing-windows
在Linux服务器上安装sphinx
1.下载源码包 http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
$ tar xzvf sphinx-0.9.8.tar.gz
$ cd sphinx
$ ./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql
$ make
$ make install
常见问题1
/usr/local/sphinx-0.9.9/src/sphinx.cpp:20060: undefined reference
to `libiconv_open'
/usr/local/sphinx-0.9.9/src/sphinx.cpp:20078: undefined reference to `libiconv'
/usr/local/sphinx-0.9.9/src/sphinx.cpp:20084: undefined reference to `libiconv_close'
collect2: ld
returned 1 exit status
make[2]: *** [indexer] Error 1
make[2]: Leaving directory `/home/jling/sphinx-0.9.9/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/jling/sphinx-0.9.9/src'
make: *** [all-recursive] Error 1
解决办法:打开configure文件,找到“#define USE_LIBICONV 1”,将注释去掉,并将1改成0。
常见问题2
error while loading
shared libraries: libmysqlclient.so.16: cannot
open shared object file: No such
file or directory
解决办法:
64位系统ln -s /usr/local/webserver/mysql/lib/mysql/libmysqlclient.so.16.0.0 /usr/lib64/libmysqlclient.so.16
32位系统ln -s /usr/local/webserver/mysql/lib/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so.16
sphinx.conf样例
source main
{
type = mysql
#数据库类型
sql_host = 10.228.134.211 #数据库ip
sql_user = admin
#数据库用户名
sql_pass = admin
#数据库密码
sql_db = phpcms_v9
#数据库名
sql_port = 3306
# 数据库端口
sql_query_pre = SET NAMES utf8
sql_query_pre = REPLACE
INTO v9_sphinx_counter SELECT 1, MAX(searchid) FROM
v9_search
sql_query = SELECT
searchid, adddate, siteid, typeid, id, data
FROM v9_search \
WHERE searchid>=$start
AND searchid<=$end
sql_query_range = SELECT 1,max_doc_id
FROM v9_sphinx_counter WHERE counter_id=1
sql_range_step = 5000
#字符串属性设置、需要过滤、排序的时候用到
sql_attr_uint = typeid
sql_attr_uint = siteid
sql_attr_uint = id
sql_attr_timestamp = adddate
sql_query_info = SELECT * FROM
v9_search WHERE searchid=$id
}
source delta
{
type = mysql
#数据库类型
sql_host = 10.228.134.211 #数据库ip
sql_user = admin
#数据库用户名
sql_pass = admin
#数据库密码
sql_db = phpcms_v9
#数据库名
sql_port = 3306
# 数据库端口
sql_query_pre = SET NAMES utf8
sql_query = SELECT
searchid, adddate, siteid, typeid, id, data
FROM v9_search \
WHERE searchid >( SELECT
max_doc_id FROM v9_sphinx_counter WHERE counter_id=1 )
sql_query_post = REPLACE
INTO v9_sphinx_counter SELECT 1, MAX(searchid) FROM
v9_search
#字符串属性设置、需要过滤、排序的时候用到
sql_attr_uint = typeid
sql_attr_uint = siteid
sql_attr_uint = id
sql_attr_timestamp = adddate
sql_query_info = SELECT * FROM
v9_search WHERE searchid=$id