sphinx3.3.1简单使用和中文分词

老版本的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
}

版权声明:本文为a7442358原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。