phpbb sphinx 全文索引

分享你的攻略吧
回复
头像
圈宝
圈圈守护者
圈圈守护者
帖子: 26
注册时间: 2020年 12月 4日 20:46
我的状态: 🎯
为圈友点赞: 42 次
被赞次数: 1 次

phpbb sphinx 全文索引

帖子 圈宝 »

phpBB的管理后台提供了四种搜索引擎选项:
  • PostgreSQL Fulltext
  • Sphinx Fulltext
  • MySQL Fulltext
  • phpBB Native Fulltext
其中只有 Sphinx Fulltext 对于中文的支持是"最好的"。
Sphinx经过测试词与词之间有空格,才能正常的被索引~
比如这个标题---【Bi.Bi Piano】亡灵序曲 The Dawn 钢琴 Dreamtale---搜索亡灵亡灵序曲,后者可以被正常检索
首先要在你的服务器上安装 sphinx 搜索服务。目前这个版本是 Sphinx 2.2.11,可以在 phpBB 3.3.3上正常运行。
简单介绍一下我这里的设置以及环境。
debian10
phpBB 3.3.3

首先安装sphinxsearch。

代码: 全选

sudo apt install sphinxsearch
准备数据目录。

代码: 全选

sudo mkdir /home/sphinx-phpbbchinese
sudo mkdir /home/sphinx-phpbbchinese/log
sudo chown sphinxsearch:sphinxsearch -R /home/sphinx-phpbbchinese/
在phpBB 3.3.x 的后台
搜索设置 》 搜索后端 选择 Sphinx Fulltext

选择后,页面中出现 Sphinx Fulltext 的配置相关的参数。
包括数据文件夹路径,我这里手工修改为 /home/sphinx-phpbbchinese/
主机和端口使用默认的就可以。
内存限制根据你的服务器内存的大小来选择。我这里选择256M
这些修改好之后,点击提交保存。

回到这个配置页面,全选复制 sphinx 配置文件内容。

之后,到 维护 》 搜索索引 ,删除不再使用的搜索引擎的索引,再在 Sphinx Fulltext 创建索引

使用 SSH 登录你的服务器的终端界面。
编辑 /etc/sphinxsearch/sphinx.conf 文件
把上一步所复制的内容,黏贴进去。
记得里面的数据库用户和密码用 mysql 的对应用户替换。
保存退出。

将sphinx用systemd管理,注意根据你的实际目录进行修改

代码: 全选

sudo vim /etc/systemd/system/sphinx.service

代码: 全选

[Unit]
Description=SphinxSearch Search Engine
After=network.target remote-fs.target nss-lookup.target
After=syslog.target

[Service]
Type=forking
User=sphinxsearch
Group=sphinxsearch
# Run ExecStartPre with root-permissions
PermissionsStartOnly=true
ExecStartPre=/usr/bin/chown sphinxsearch.sphinxsearch /home/sphinx-phpbbchinese
# Run ExecStart with User=sphinxsearch / Group=sphinxsearch
ExecStart=/usr/bin/searchd --config /etc/sphinxsearch/sphinx.conf
ExecStop=/usr/bin/searchd --config /etc/sphinxsearch/sphinx.conf --stopwait
KillMode=process
KillSignal=SIGTERM
SendSIGKILL=no
LimitNOFILE=infinity
PIDFile=/home/sphinx-phpbbchinese/searchd.pid

[Install]
WantedBy=multi-user.target
[email protected]
[email protected]
开机自启动

代码: 全选

sudo systemctl enable --now sphinx
查看运行状态

代码: 全选

sudo systemctl status sphinx
然后手工建立完整索引一次。

代码: 全选

sudo -u sphinxsearch indexer --all
再重启 sphinxsearch 服务。

代码: 全选

sudo systemctl restart sphinx.service
为了让新帖也能被索引进去,在crontab添加下面的命令,每小时运行一次。
下面的这段 ID: 1sqh9wuud70fuxy8,在上面的配置文件中可以找到。

代码: 全选

0 * * * *  sudo -u sphinxsearch /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf index_phpbb_1sqh9wuud70fuxy8_main >> /home/sphinx-phpbbchinese/log/indexer.log 2>&1 &
0 * * * *  sudo -u sphinxsearch /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf index_phpbb_1sqh9wuud70fuxy8_delta >> /home/sphinx-phpbbchinese/log/indexer.log 2>&1 &
Refer from 中文全文搜索, modified by 圈宝
当时明月在,曾照彩云归
回复

在线用户

正浏览此版面之用户: 和 0 访客