老版本的sphinx没有用过,或许设置很复杂,但是新版本的sphinx使用起来就简单多了。
测试环境:
centos7
mysql 5.7
php7.2
1. 下载sphinx
到官网下载最新的sphinx
2.解压缩
sphinx无需安装,解压缩后只需要把文件夹放在你需要的位置即可。
3.导入测试数据库
sphinx安装目录下的etc下有一个example.sql文件,是一个测试使用的数据库文件,我们需要把它导入到mysql中。
4.复制并更改配置文件
sphinx安装目录下的etc为配置文件,sphinx.conf.dist为完整的配置文件,包含参数很多,测试的时候,没必要使用。sphinx-min.conf.dist为最小化版配置文件,我们可以使copy一份作为测试时使用的配置文件,命名为test1.conf。当然还有一些地方需要更改
1.数据库相关配置
2.文件存储相关路径
这些都可以根据自身情况来指定。
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#
source src1
{
type = mysql
sql_host = localhost
sql_user = test
sql_pass =
sql_db = test
sql_port = 3306 # optional, default is 3306
sql_query = \
SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
FROM documents
sql_attr_uint = group_id
sql_attr_uint = date_added
}
index test1
{
source = src1
path = /var/data/test1
}
index testrt
{
type = rt
rt_mem_limit = 128M
path = /var/data/testrt
rt_field = title
rt_field = content
rt_attr_uint = gid
}
indexer
{
mem_limit = 128M
}
searchd
{
listen = 9312
listen = 9306:mysql41
log = /var/log/searchd.log
query_log = /var/log/query.log
read_timeout = 5
max_children = 30
pid_file = /var/log/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = /var/data
}
5. 创建索引
来到bin目录下,使用indexer来创建索引
./indexer --config ../etc/test1.conf --all
6.启动服务
./searchd -c ../etc/test1.conf
7.复制api文件
sphinx安装目录下的api文件夹下有一个sphinxapi.php文件,是sphinx为php提供的api文件,我们只需要copy该文件到引用目录即可。
8.简单测试
require 'sphinxapi.php';
$sphinx = new SphinxClient();
$sphinx->SetServer('localhost',9312);
$sphinx->SetArrayResult ( true );
$res = $sphinx->Query($_GET['key'],'test');
echo '<pre>';
print_r($res);
如果正常打印,说明sphinx正常运行
9.中文支持
默认情况下不支持中文,但是可以通过配置来支持,只需要添加ngram_len和ngram_chars 即可
index test1
{
source = src1
path = /zy/software/sphinx-3.3.1/data/test1
ngram_len = 1
ngram_chars = U+3000..U+2FA1F
}