首先先下载 sphinx -> Sphinx 3 downloads。
//进入目录 cd /usr/local/src //下载压缩包 wget http://sphinxsearch.com/downloads/sphinx-3.5.1-82c60cb-linux-amd64-glibc2.17.tar.gz //解压该压缩包 tar zxvf sphinx-3.5.1-82c60cb-linux-amd64-glibc2.17.tar.gz
移动目录
一般移动到 /usr/local/sphinx,我使用的宝塔,移动到 /www/server/sphinx
mv sphinx-3.5.1 /www/server/sphinx
修改配置
example.sql MySQL示例,导入数据库,方便理解
sphinx.conf.dist 配置文件完整版
sphinx-min.conf.dist 配置文件精简版
//复制一个配置文件改名并放在bin目录中 cp sphinx-min.conf.dist /www/server/sphinx/bin/sphinx.conf
根据自己的实际使用情况,修改相关配置
#
# 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_pre = SET NAMES utf8
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 = /www/server/sphinx/var/data/test1
# 搜索中文 很重要 配置文件里面没有需要写入
ngram_len = 1
# 用于匹配的正则,需要手动写入 这里是匹配中文 还可以添加其他的
ngram_chars = U+3000..U+2FA1F
}
index testrt
{
type = rt
rt_mem_limit = 128M
path = /www/server/sphinx/var/data/testrt
rt_field = title
rt_field = content
rt_attr_uint = gid
}
indexer
{
mem_limit = 128M
}
searchd
{
listen = 9312
listen = 9306:mysql41
log = /www/server/sphinx/var/log/searchd.log
query_log = /www/server/sphinx/var/log/query.log
read_timeout = 5
max_children = 30
pid_file = /www/server/sphinx/var/log/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = /www/server/sphinx/var/data
}根据个人修改的配置,新建目录
//返回上一级 cd ../ //新建 var 目录 mkdir var //进入 var 目录 cd var //新建 data 目录 mkdir data //新建 log 目录 mkdir log
生成索引
//生成 test1 索引 ./indexer -c sphinx.conf test1 //生成全部索引 ./indexer -c sphinx.conf --all //启动 search 服务 ./searchd
搜索测试
新建 search.php 文件
<?php
header("Content-type:text/html;charset=utf-8");
$keyword = isset($_GET['keyword']) ? $_GET['keyword'] : '测试'; //搜索关键字
include '/www/server/sphinx/api/sphinxapi.php';
$cl = new SphinxClient();
$cl->SetServer('127.0.0.1', 9312); //连接 sphinx
$cl->SetLimits(0, 20); //分页,默认 20
$cl->SetArrayResult(true); //返回数组
$res = $cl->Query($keyword, "test1"); //搜索关键字 索引数据源
// $res = $cl->Query("\"$keyword\"/1", "test1");//搜索匹配第一个字
$err = $cl->GetLastError();
if ($err) {
echo $err;
} else {
var_dump($res['matches']);
}有好的文章希望我们帮助分享和推广,猛戳这里我要投稿





还没有评论,来说两句吧...