Jump to content
PHP論壇人

10-1.安裝Sphinx CJK搜尋中文 for vBulletin 6.0 (Debian使用)


Recommended Posts

Posted (edited)

-------------------------------------------------------------
安裝Sphinx CJK搜尋中文 for vBulletin 6.0 (Debian使用)
-------------------------------------------------------------

需要修改 vbulletin-sphinx.php

因此在附件可以下載 vbulletin-sphinx.php

 

 

-----------------------------------------------------------------
 安裝套件、依賴包
-----------------------------------------------------------------


安裝java
sudo apt-get install default-jdk

java -version

sudo apt-get install openjdk-17-jdk

 

 


瀏覽目前安裝的python3版本

python3 --version

得知已安裝 Python 3.11.2

 

 

安裝 python-devel

sudo apt install aptitude

sudo aptitude install python3-dev

 

 

 

瀏覽目前的glibc版本

ldd --version

得知已安裝 ldd (Debian GLIBC 2.36-9+deb12u7) 2.36

目前的glibc版本 2.36,應該不用更新

 

 

安裝gcc

sudo apt-get install gcc

 

 

瀏覽目前的python版本

python3 --version

得知已安裝Python 3.11.2

 

 

安裝Jpype1

pip3 install --break-system-packages Jpype1

 


安裝 libpq 15.6

sudo apt-get install libpq5

sudo apt-get install libpq-dev

 

pip安裝sphinx,也許需要相關的依賴包

pip3.11 install --break-system-packages 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版本太新,會有更多的錯誤

 

下載完成,SFTP上傳到自己的伺服器,放在 /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/ 建立目錄
-----------------------------------------------------------------

建立log與data目錄

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
改為
type    = mariadb


這個不用改
listen    = {$config['Misc']['sphinx_port']}:mysql41

 

本教學還有額外修改程式碼,不過你不用修改,本帖子附件可以下載到

注意:只建議安裝 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

 

忽略有關 xxxxxxx_disk 索引的警告,一旦運行,索引器就會建立

 

如果Sphinx版本太新 (例如 sphinx-3.7.1),會有更多的錯誤

因為vbulletin-sphinx.php是從舊版PHP 7修改來的

 

 

 


----------------------------------------------------------
測試sphinx是否運行
----------------------------------------------------------

ps ax | grep search[d]


如果正常運行,則顯示 /usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/vbulletin-sphinx.php 類似的訊息

 

 


-----------------------------------------------------------------
論壇後台打開Sphinx中文搜尋
-----------------------------------------------------------------

論壇後台 -> 設置 -> 選項 -> 消息搜索選項 -> 

啟用搜索引擎 -> 是

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

-> 保存

 

 

論壇後台 -> 設置 ->搜索類型

選擇搜索執行 -> Sphinx搜索

-> 進行

 

 

論壇後台 -> 維護 -> 清除系統緩存

論壇後台 -> 維護 -> 一般更新工具 -> 重建搜索索引 -> 你確定要清空搜索索引? -> 是

論壇後台 -> 維護 -> 一般更新工具 -> 重建搜索索引 -> 要索引的內容類型 -> 所有 -> 重建搜索索引

 

 

 

----------------------------------------------------------
重開機時,將自動啟動Sphinx
----------------------------------------------------------

網路找到的開機啟動Sphinx腳本


寫一個sphinx.sh

cd /usr/local/bin


vi sphinx.sh


將下面幾行複製貼上 (Debian要用的,與CentOS有些微不同之處)

#!/bin/sh

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 教學,為了Debian改用 iptables 防火牆 (開機啟動firewall.sh)

 

修改rc.local

vi /etc/rc.local

 

將下面這一行 複製貼上到 ..... firewall.sh start 的底下

/usr/local/bin/sphinx.sh start

 

 

儲存並離開
:wq

 

 

重開機
sudo reboot

 

 

測試sphinx是否運行
ps ax | grep search[d]

 

 

回到vb論壇

已經可以搜尋中文的2個字

 

vbulletin-sphinx.zip

Edited by Jack
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...