迪巴拉 发表于 2022-8-31 18:09:17

社区无法全文搜索,求助Sphinx的安装及配置方法

如题,社区无法全文搜索,求助Sphinx的安装及配置方法,有哪位大神会的,请指导一下,万分感谢!
我知道答案 回答被采纳将会获得5 金币 已有0人回答

Guoyuh78 发表于 2022-12-26 18:53:04

求助Sphinx的安装及配置方法

Discuz智能体 发表于 2025-3-20 18:09:39

**Sphinx全文搜索安装及配置指南(适配Discuz!)**

**一、环境准备**
1. 确认服务器系统版本(CentOS/Ubuntu为例)
2. 安装依赖库:
# CentOS
yum install gcc make mysql-devel
# Ubuntu
apt-get install gcc make libmysqlclient-dev

**二、Sphinx安装**
wget http://sphinxsearch.com/files/sphinx-3.4.1.tar.gz
tar -zxvf sphinx-3.4.1.tar.gz
cd sphinx-3.4.1
./configure --prefix=/usr/local/sphinx --with-mysql
make && make install

**三、Discuz!数据库配置**
1. 创建`sphinx.conf`配置文件(路径:`/usr/local/sphinx/etc/sphinx.conf`)
source pre_forum_post
{
    type            = mysql
    sql_host      = localhost
    sql_user      = 数据库用户名
    sql_pass      = 数据库密码
    sql_db          = 数据库名
    sql_port      = 3306
    sql_query_pre   = SET NAMES utf8
    sql_query       = SELECT pid, tid, subject, message FROM pre_forum_post
    sql_attr_uint   = tid
}

index pre_forum_post_index
{
    source          = pre_forum_post
    path            = /usr/local/sphinx/var/data/pre_forum_post
    docinfo         = extern
    charset_type    = utf-8
    ngram_len       = 1
    ngram_chars   = U+3000..U+2FA1F# 覆盖中文扩展字符
}

searchd
{
    listen          = 9312
    log             = /usr/local/sphinx/var/log/searchd.log
    query_log       = /usr/local/sphinx/var/log/query.log
    pid_file      = /usr/local/sphinx/var/log/searchd.pid
    read_timeout    = 5
    max_children    = 30
}

**四、索引操作**
# 生成索引
/usr/local/sphinx/bin/indexer --all --config /usr/local/sphinx/etc/sphinx.conf

# 启动守护进程
/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf

**五、Discuz!后台设置**
1. 进入 **全局 > 搜索设置**
2. 搜索类型选择 **Sphinx**
3. 参数配置:
   - Sphinx服务器地址:127.0.0.1:9312
   - 索引名称:pre_forum_post_index

**六、中文分词优化(可选)**
若需增强分词效果,可添加以下配置:
index pre_forum_post_index
{
    ...
    charset_table   = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
    min_word_len    = 1
    html_strip      = 1
}

**七、定时任务(crontab)**
# 每日凌晨增量更新
0 3 * * * /usr/local/sphinx/bin/indexer --rotate --config /usr/local/sphinx/etc/sphinx.conf pre_forum_post_index

**八、故障排查**
1. 检查日志文件:
   tail -f /usr/local/sphinx/var/log/searchd.log
2. 端口占用检测:
   netstat -tunlp | grep 9312
3. 强制重建索引:
   /usr/local/sphinx/bin/indexer --rotate --all --config /usr/local/sphinx/etc/sphinx.conf

**九、性能优化建议**
1. 对高频搜索字段(如`subject`)建立独立属性
2. 为`tid`字段配置分布式索引
3. 调整`searchd`配置中的`max_children`参数

_注:若需深度整合第三方分词库(如结巴分词),需通过DZ插件网获取适配组件。_
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 社区无法全文搜索,求助Sphinx的安装及配置方法