?
每天分享站長經驗,廣告營銷經驗
您的當前位置:主頁 > 站長資訊 > 技術文摘 > 正文

實例講解帝國cms整合xunsearch(迅搜)教程

來源:51酷酷 編輯:廣告聯盟評測網 時間:2017-11-28 16:50:18
帝國CMS安裝迅搜_linux系統下 安裝迅搜記錄
目的:由于帝國的搜索實在是太弱了,所以想找個效率高的搜索。其實很早就知道迅搜這個開源程序,因為我做的一個插件就是用迅搜的分詞系統做的。
先按官方的操作,把程序安裝到服務器上。我的部署是這樣的:


1\運行下面指令下載、解壓安裝包
cd /home
wget [url]http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2[/url]
tar -xjf xunsearch-full-latest.tar.bz2

注:在運行1這個步驟前,先打開你想下載的目標文件夾,比如我是下載在home這個文件夾里面的。如果你是第一次安裝,可以 按我給的步驟來操作。

2\我在安裝的時候碰到問題是,Xshell下中文亂碼,所以在做第2步之前,得先把編碼換成UTF8,這樣才能顯示中文。
執行安裝腳本,根據提示進行操作,主要是輸入 xunsearch 軟件包的安裝目錄,強烈建議單獨規劃一個目錄,而不是混到別的軟件目錄中。

cd xunsearch-full-1.4.8
sh setup.sh
+==========================================+
| Welcome to setup xunsearch(full) |
| 歡迎使用 xunsearch (完整版) 安裝程序 |
+------------------------------------------+
| Follow the on-screen instructions please |
| 請按照屏幕上的提示操作以完成安裝 |
+==========================================+

Please specify the installation directory
請指定安裝目錄 (默認為中括號內的值)

注:另外安裝過程中,會提示安裝的路徑,這樣很像在電腦上安裝軟件。我安裝的路徑是 " /usr/local/xunsearch",同時我把文件夾里面的data軟連接在"/mnt/xunsearch/x/data",這樣便于管理,打開"/usr/local/xunsearch/data"其實就是打開"/mnt/xunsearch/x/data",文件會存放在"/mnt/xunsearch/x/data",這里需要注意設定好權限,不然會有問題產生。

軟鏈接文件夾的建立:(建立軟鏈接的時候先刪除/usr/local/xunsearch/data)
mkdir -p /mnt/xunsearch/x/data
ln -s /mnt/xunsearch/x/data /usr/local/xunsearch/data

安裝成功后有信息:
+=================================================+
| Installation completed successfully, Thanks you |
| 安裝成功,感謝選擇和使用 xunsearch |
+-------------------------------------------------+
| 說明和注意事項: |
| 1. 開啟/重新開啟 xunsearch 服務程序,命令如下: |
| /usr/local/xunsearch/bin/xs-ctl.sh restart
| 強烈建議將此命令寫入服務器開機腳本中 |
| |
| 2. 所有的索引數據將被保存在下面這個目錄中: |
| /usr/local/xunsearch/data
| 如需要轉移到其它目錄,請使用軟鏈接。 |
| |
| 3. 您現在就可以在我們提供的開發包(SDK)基礎上 |
| 開發您自己的搜索了。 |
| 目前只支持 PHP 語言,參見下面文檔: |
| /usr/local/xunsearch/sdk/php/README
+=================================================+
其中開機自動啟動可以找這個腳本"/etc/rc.local ",然后加入: /usr/local/xunsearch/bin/xs-ctl.sh restart 就行。

3\待命令運行結束后,如果沒有出錯中斷,則表示順利安裝完成,然后就可以啟動/重新啟動 xunsearch 的后臺服務,下面命令中的 $prefix 請務必替換為您的安裝目錄,而不是照抄。我安裝的路徑是 " /usr/local/xunsearch"
cd $prefix
bin/xs-ctl.sh restart

顯示:
INFO: stopping server[xs-indexd] (BIND:127.0.0.1:8383) .... [OK]
INFO: re-starting server[xs-indexd] ... (BIND:127.0.0.1:8383)
INFO: stopping server[xs-searchd] (BIND:127.0.0.1:8384) .... [OK]
INFO: re-starting server[xs-searchd] ... (BIND:127.0.0.1:8384)

程序正常啟動,就說明可以使用了。可以看官方的文檔說明,這里只是把我安裝的遇到的問題寫出來,詳細的一些東西可以看官方的。
注:以下安裝的路徑:"$prefix/sdk/php/util/",先在此聲明,下面很多安裝都在這個路徑下,所以請注意。
沒有仔細看的小盆友,可能會有疑惑。


到這里很多人像我一樣不知道下一步要干啥。
這也是我想寫這篇文章的原因,告訴你我也碰到了這個問題,我是這樣做的。
4\配置項目.INI,以下是我的配置參數,可供參考,另外有不明白的地方可以看官方文檔。
每一個?xunsearch?搜索項目都一個獨立的 INI 配置文件。DEMO 項目的配置文件 位于$prefix/sdk/php/app/demo.ini?使用以下指令便可直接查看配置文件內容。
cat $prefix/sdk/php/app/demo.ini

project.name = ecms
project.default_charset = GBK
;服務端用默認值
server.index = 8383
server.search = 8384

[id]
type = id

[classid]
index = self
tokenizer = full

[title]
type = title

[smalltext]
type = body

[newstime]
type = numeric
注:修改完,記得把文件名改為項目的名稱,比如ecms.ini
5\# 導入 MySQL 數據庫的 dbname.tbl_post 表到 demo 項目中,并且平滑重建
util/Indexer.php --rebuild --source=mysql://root:[email protected]/dbname --sql="SELECT * FROM tbl_post" --project=demo

注:這里的前提是你已經把帝國裝在服務器上了"mysql://root:[email protected]/dbname",這個句段必須得知道root的密碼,另外帝國使用的數據庫名稱,比如"empirecms",而"tbl_post"得換成帝國數據庫里面的其中一個表,比如"phome_ecms_news"
如果項目是ecms,那把項目demo換成ecms。

我的操作;
[[email protected] php]# util/Indexer.php --rebuild --source=mysql://root:你的密碼@localhost/帝國數據庫 --sql="SELECT * FROM 表" --project=ecmsd
開始重建索引 ...
初始化數據源 ... mysql://root:[email protected]/duzim_empirecms
開始批量導入數據 (請直接輸入數據) ...
開始批量導入數據 (請直接輸入數據) ...
報告:累計已處理數據 10000 條 ...
報告:累計已處理數據 20000 條 ...
報告:累計已處理數據 30000 條 ...
報告:累計已處理數據 40000 條 ...
報告:累計已處理數據 50000 條 ...
報告:累計已處理數據 60000 條 ...
報告:累計已處理數據 70000 條 ...
報告:累計已處理數據 80000 條 ...
報告:累計已處理數據 90000 條 ...
報告:累計已處理數據 100000 條 ...
報告:累計已處理數據 110000 條 ...
報告:累計已處理數據 120000 條 ...
報告:累計已處理數據 130000 條 ...
報告:累計已處理數據 140000 條 ...
報告:累計已處理數據 150000 條 ...
報告:累計已處理數據 160000 條 ...
報告:累計已處理數據 170000 條 ...
報告:累計已處理數據 180000 條 ...
完成索引導入:成功 37813 條,失敗 0 條
完成重建索引 ...



6\使用官方的搜索模板,自動生成
官方提供三種方式生成:

# 在當前目錄下生成 demo 項目的搜索代碼
util/SearchSkel.php demo

[[email protected] php]# util/SearchSkel.php ecmsd
初始化項目對象 ...
解析字段,生成變量清單 ...
檢測并創建輸出目錄 ...
正在生成 search.php ...
正在生成 suggest.php ...
正在復制 css ...
正在復制 img ...
正在生成 search.tpl ...
完成,請將 `./ecmsd` 目錄轉移到 web 可達目錄,然后訪問 search.php 即可。

# 在指定的 /path/to/web 目錄生成 demo 搜索代碼,代碼目錄為:/path/to/web/demo
util/SearchSkel.php demo /path/to/web

# 使用選項指定方式
util/SearchSkel.php -p demo -o /path/to/web

我的操作:
util/SearchSkel.php -p ecms -o /mnt/htdocs/public_html/s/ecms
"/mnt/htdocs/public_html/s/ecms"這是自己網站里的一個文件夾,方便用FTP修改。

這三個步驟操作完成,基本就可以使用了。

如果出現問題,把問題復制然后百度,我是這樣解決的,這樣可以解決大部分的問題,其他就得自己動手了。關鍵在于動手。

怎么使用:
比如網站是www.xxx.com
那么可以打開www.xxx.com/s/ecms/search.php 搜索任意關鍵詞就行


通過自動動手以后,知道原來迅搜不是在搜索mysql數據庫的內容,而是把mysql某個庫的某個表先導入自己的庫里面,然后在自己的數據庫里搜索,前面我們已經把自己的?數據庫導入迅搜指定的存放地點。
我的配置里面,有id,classid,title,smalltext,newstime,所以導入的數據會跟這些字段匹配。

當然,我們也可以導入副表里面的newstext,做多表查詢,具體實施方法,有空再跟大家探討。

一些問題的解答:
我是使用util/Indexer.php --source=mysql://aaa:[email protected]/bbs_test --sql="select * from cdb_posts" --project=discuz
這個命令進行導入的,不知道能否有一個從斷點繼續的方法?

RE: 索引到一大半的時候出錯退出,有沒有辦法繼續?
Indexer.php 你可以在 sql 語句中指定 offset 和 limit
--sql="select * from cdb_posts limit 999999999999 offset 5000000" 類似這樣,OFFSET 不能單用必須配合 limit

相關評測:

51酷酷網-廣告聯盟評測網

Top 双色球预测爱彩网