首先先下载 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']); }
有好的文章希望我们帮助分享和推广,猛戳这里我要投稿
还没有评论,来说两句吧...