Jump to content
PHP論壇人

vBulletin 6.0 Sphinx CJK 中文搜索 (LNMP一键包)


Recommended Posts

vBulletin 6.0 Sphinx CJK 中文搜索 (LNMP一键包)


宝塔面板可用的Sphinx CJK 中文搜索,修改为LNMP一键包的路径后,还是不能用,有错误消息

 

还要再修改 vbulletin-sphinx.php

因此本帖子附件可下载 vbulletin-sphinx.php

 

教程环境:Rocky Linux 8、军哥LNMP一键安装包 2.0、MySQL 5.7、PHP 8.0


-----------------------------------------------------------------
 安装套件、依赖包
-----------------------------------------------------------------


安装java
yum -y install java

 

安装python3.11、安装 python-devel
yum -y install python3.11


yum -y install python3.11-devel

 

安装glibc-2.28
yum -y install glibc

 

安装gcc-c++ 8.5
yum -y install gcc-c++

 

安装mysql-devel-8.0.36
yum -y install mysql-devel


安装pip
wget https://bootstrap.pypa.io/pip/get-pip.py

python3.11 get-pip.py

 

安装Jpype1
pip3.11 install Jpype1

 


安装 libpq 13.11
yum -y install libpq

 


pip安装sphinx,也许需要相关的依赖包
pip3.11 install --user sphinx

 


-----------------------------------------------------------------
下载Sphinx二进制包 & make编译
-----------------------------------------------------------------

Sphinx官网下载
http://sphinxsearch.com/downloads

 

安装 Sphinx 3.0.1
http://sphinxsearch.com/downloads/sphinx-3.0.1-7fec4f6-linux-amd64.tar.gz/thankyou.html

 

Sphinx版本太新,会有更多的错误

 

下载完成,上传到自己的服务器,放在 /usr/local/ 目录

cd /usr/local/

tar zxf sphinx-3.0.1-7fec4f6-linux-amd64.tar.gz


将sphinx-3.0.1目录,更名为sphinx
mv sphinx-3.0.1-7fec4f6-linux-amd64 sphinx

 

开始编译
cd /usr/local/sphinx/api/libsphinxclient

./configure --enable-id64 --prefix=/usr/local/sphinx

make && make install

 

 

-----------------------------------------------------------------
在 /usr/local/sphinx/ 创建目录
-----------------------------------------------------------------

创建目录

mkdir /usr/local/sphinx/log

mkdir /usr/local/sphinx/data

 

 


-----------------------------------------------------------------
 配置vBulletin论坛的config.php
-----------------------------------------------------------------

vi /home/wwwroot/域名.com/core/includes/config.php

在论坛根目录/core/includes/config.php 文件的末尾,添加以下内容: 

$config['Misc']['sphinx_host']    = '127.0.0.1';
$config['Misc']['sphinx_port']    = '9306';
$config['Misc']['sphinx_path']    = '/usr/local/sphinx'; //no trailing slash
$config['Misc']['sphinx_config']    = $config['Misc']['sphinx_path'] . '/etc/vbulletin-sphinx.php';


保存并离开
:wq

 


-----------------------------------------------------------------
vbulletin-sphinx.php 文件上传
-----------------------------------------------------------------

vbulletin-sphinx.php 上传到 /usr/local/sphinx/etc/ 目录

本帖子的附件可下载 vbulletin-sphinx.php

 

 


-----------------------------------------------------------------
上传 sphinxsearchfiles 文件夹
-----------------------------------------------------------------

SFTP上传 sphinxsearchfiles 文件夹 到 /home/wwwroot/域名.com/

在vBulletin 6.0 论坛程序.zip 的 do_not_upload 文件夹中,可找到 sphinxsearchfiles 文件夹


改为 www www
chown www:www -R /home/wwwroot/域名.com/*



cd /home/wwwroot/域名.com/


查看sphinxsearchfiles是否改为 www www
ls -l

 

 


-----------------------------------------------------------------
修改 vbulletin-sphinx.php
-----------------------------------------------------------------

修改 vbulletin-sphinx.php

vi /usr/local/sphinx/etc/vbulletin-sphinx.php

修改为LNMP一键包的PHP路径
#!/usr/local/php/bin/php -q


 $myforumroot 更改为确切的论坛根目录
$myforumroot = '/home/wwwroot/你的域名.com';


$charsetTablesFolder = '/home/wwwroot/域名.com/sphinxsearchfiles';
$charsetTablesPrefix = 'sphinxcharsets_cjk.txt';


查找 mysql,如果你的服务器是安装mariadb,能不能将 mysql 改为 mariadb,还需要测试过才知道
type    = mysql
listen    = {$config['Misc']['sphinx_port']}:mysql41


本教程还有额外修改vbulletin-sphinx.php程序码,不过你不用修改,本帖子附件可以下载到

 

注意:只建议安装 Sphinx 3.0.1,Sphinx其他的版本在下面执行会有其他错误


保存并离开
:wq

 


-----------------------------------------------------------------
将 vbulletin-sphinx.php 文件设置为可执行文件
-----------------------------------------------------------------

设置为可执行文件
chmod +x /usr/local/sphinx/etc/vbulletin-sphinx.php

 

-----------------------------------------------------------------
启动服务(daemon)
-----------------------------------------------------------------

cd /usr/local/sphinx/

/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/vbulletin-sphinx.php


忽略有关 vbulletin disk 索引的警告,一旦运行索引器就会创建

sphinx1.png

 

 

如果Sphinx版本太新 (sphinx-3.7.1),会有更多的错误

 

因为vbulletin-sphinx.php基本还是旧版PHP修改来的

 


----------------------------------------------------------
测试sphinx是否运行
----------------------------------------------------------

ps ax | grep search[d]


如果正常运行,则显示 /usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/vbulletin-sphinx.php 类似的消息

 


-----------------------------------------------------------------
论坛后台打开Sphinx中文搜索
-----------------------------------------------------------------

论坛后台 -> 设置 -> 选项 -> 消息搜索选项 -> 

启用搜索引擎 -> 是

搜索索引字的最小长度 -> 2

-> 保存

 

 

论坛后台 -> 设置 ->搜索类型

选择搜索执行 -> Sphinx搜索

-> 进行

 

 

论坛后台 -> 维护 -> 清除系统缓存

论坛后台 -> 维护 -> 一般更新工具 -> 重建搜索索引 -> 你确定要清空搜索索引? -> 是


论坛后台 -> 维护 -> 一般更新工具 -> 重建搜索索引 -> 要索引的内容类型 -> 所有 -> 重建搜索索引

 

 

----------------------------------------------------------
reboot auto start sphinx
----------------------------------------------------------

网上找到开机启动Sphinx脚本


写一个sphinx.sh
cd /usr/local/bin

vi sphinx.sh

将下面几行黏贴到 sphinx.sh

#!/bin/sh

. /etc/rc.d/init.d/functions

appName="Sphinx"

stop(){
/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/vbulletin-sphinx.php --stop > /dev/null 2>&1
        ret=$?
        if [ $ret -eq 0 ]; then
            action $"Stoping $appName: " /bin/true
        else
            action $"Stoping $appName: " /bin/false
        fi
    return $ret
}  


start(){
/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/vbulletin-sphinx.php > /dev/null 2>&1
        ret=$?
        if [ $ret -eq 0 ]; then
            action $"Starting $appName: " /bin/true
        else
            action $"Starting $appName: " /bin/false
        fi
    return $ret
}


case $1 in
    restart)
    stop
    start
    ;; 

    stop)
    stop
    ;;

    start)
    start
    ;; 
esac

exit 0


保存并离开
:wq

 

-----------------------------------------------------
sphinx.sh修改为可执行权限
-----------------------------------------------------

chmod +x /usr/local/bin/sphinx.sh

 

 

-----------------------------------------------------
修改rc.local,开机启动Sphinx
-----------------------------------------------------

之前写过 rc.local 教程,为了CentOS Linux 改为使用 iptables 防火墙 (开机启动firewall.sh)


修改rc.local
vi /etc/rc.d/rc.local


把这一行 贴到 最底下
/usr/local/bin/sphinx.sh start

 

保存并离开
:wq

 

重开机
sudo reboot

 

测试sphinx是否运行
ps ax | grep search[d]


回到论坛

可搜索中文的2个字

sphinx2.png

 

sphinx3.png

 

sphinx4.png

 

 

本教程额外修改vbulletin-sphinx.php程序码

vbulletin-sphinx.zip

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...