sphinx配置多索引


之前有写过sphinx的简单使用, 初次接触sphinx的同学可以先了解下, windows和linux都有

修改配置文件

原配置文件

找到sphinx.conf配置文件, 假设当前已经有一个索引已经配置ok, 那么你的文件打开后应该类似这样的,其中数据源为article_source,对应文章表, 索引名称为article,对应article_source

source article_source
{
        type                    = mysql
        sql_host                = SQLHOST
        sql_user                = username
        sql_pass                = password
        sql_db                  = DBNAME
        sql_port                = 3306  # optional, default is 3306
        sql_query_pre           = SET NAMES utf8
        sql_query               = \
        SELECT id, title, content \
                FROM tablename
}

index article
{
        source                  = article_source # 对应上面source的名称
        path                    = /sphinx/article_data
        min_word_len            = 1
        ngram_len               = 1
        ngram_chars             = U+3000..U+2FA1F
}


indexer
{
        mem_limit               = 512M
}

searchd
{
        listen                  = 9312
        listen                  = 9306:mysql41
        log                     = /sphinx/searchd.log
        query_log               = /sphinx/query.log
        read_timeout            = 5
        max_children            = 30
        pid_file                = /sphinx/searchd.pid
        seamless_rotate         = 1
        preopen_indexes         = 1
        unlink_old              = 1
        binlog_path             = /sphinx/data
}

现在我们有一个新表, 假设为音乐表, 我们需要根据歌曲名称, 和歌词来匹配对应的歌曲, 供用户去搜索, 也需要使用sphinx, 那么我们应该如何做呢?

构建新数据源

打开sphinx.conf文件, 在article_source数据源的下方, 声明下新的音乐数据源

source music_source
{
        type                    = mysql
        sql_host                = SQLHOST
        sql_user                = username
        sql_pass                = password
        sql_db                  = DBNAME
        sql_port                = 3306  # optional, default is 3306
        sql_query_pre           = SET NAMES utf8
        sql_query               = \
        SELECT id, name, lyric \
                FROM music
}

配置index

在index article下方, 构建音乐数据源的索引

index music
{
        source                  = music_source # 对应上面source的名称
        path                    = /sphinx/music_data
        min_word_len            = 1
        ngram_len               = 1
        ngram_chars             = U+3000..U+2FA1F
}

这里要注意一下, 两个索引的path不能在同一个目录下, 也有可能是我操作有误, 放在同一目录下面一直报错

至此, 配置文件就配置好了

重新构建索引

停止searchd服务

构建索引时需要停掉运行中的searchd服务, 不然会失败, 原索引如果正在使用中, 请谨慎停止, 或者研究一下--rotate 参数

--rotate 用于轮换索引,在不停止服务的时候(searchd运行时)增加索引;searchd运行时不加会报错。

停止searchd命令:

searchd -c source.conf --stop

重建索引

命令:

indexer -c sphinx.conf -all

启动searchd服务

searchd

文章作者: 大熊
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 大熊 !
 上一篇
Composer的安装及使用 Composer的安装及使用
> Composer 是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件
下一篇 
使用命令行执行CI控制器中的函数 使用命令行执行CI控制器中的函数
有些时候我们在执行一些长时间的任务的时候, 使用浏览器运行是很不友好的, 看不到实时输出, 时间过长浏览器还会超时, 这时候就需要在命令行中来执行
  目录