- N +

sphinx 安装及使用

首先先下载 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']);
}


有好的文章希望我们帮助分享和推广,猛戳这里我要投稿

返回列表
上一篇:
下一篇:

发表评论中国互联网举报中心

快捷回复:

验证码

    评论列表 (暂无评论,共人参与)参与讨论

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