sphider+scws

一、安裝scws
============================================

1. 取得 scws-1.2.0 的代碼
wget http://www.ftphp.com/scws/down/scws-1.2.0.tar.bz2

2. 解開壓縮包
[hightman@d1 ~]$ tar xvjf scws-1.2.0.tar.bz2

3. 進入目錄執行配置腳本和編譯
[hightman@d1 ~]$ cd scws-1.2.0
[hightman@d1 ~/scws-1.2.0]$ ./configure --prefix=/usr/local/scws ; make ; make install

4. 順利的話已經編譯並安裝成功到 /usr/local/scws 中了,執行下面命令看看文件是否存在
[hightman@d1 ~/scws-1.2.0]$ ls -al /usr/local/scws/lib/libscws.la

5 用 wget 下載並解壓詞典,或從主頁下載然後自行解壓再將 *.xdb 放入 /usr/local/scws/etc 目錄中
[hightman@d1 ~/scws-1.2.0]$ cd /usr/local/scws/etc
[hightman@d1 /usr/local/scws/etc]$ wget http://www.ftphp.com/scws/down/scws-dict-chs-

gbk.tar.bz2
[hightman@d1 /usr/local/scws/etc]$ wget http://www.ftphp.com/scws/down/scws-dict-chs-

utf8.tar.bz2
[hightman@d1 /usr/local/scws/etc]$ tar xvjf scws-dict-chs-gbk.tar.bz2
[hightman@d1 /usr/local/scws/etc]$ tar xvjf scws-dict-chs-utf8.tar.bz2

6. 如果您需要在 php 中調用分詞,建議繼續閱讀本文安裝 php 擴展(和安裝APC一樣)。
假設您已經將 scws 按上述步驟安裝到 /usr/local/scws 中。
tar -zxvf xampp-linux-devel-1.7.7.tar.gz

cp -r ./lampp/include /opt/lampp/

yum install php-devel pcre-devel
yum groupinstall "Development Tools"

cd ~/scws-1.2.0/phpext/
/opt/lampp/bin/phpize
whereis php-config

找到php-config的路徑,下面用

./configure --with-scws=/usr/local/scws --with-php-config=/opt/lampp/bin/php-config
make
make install

vi /opt/lampp/etc/php.ini
添加

[scws]
;
; 注意請檢查 php.ini 中的 extension_dir 的設定值是否正確, 否則請將 extension_dir 設爲空,
; 再把 extension = scws.so 指定絕對路徑。
;
extension = scws.so
scws.default.charset = gbk
scws.default.fpath = /usr/local/scws/etc

/opt/lampp/lampp stopapache
/opt/lampp/lampp startapache

    6) 命令行下執行 php -m 就能看到 scws 了或者在 phpinfo() 中看看關於 scws 的部分,記得要重

啓 web 服務器
       才能使新的 php.ini 生效。


二、安裝sphider
============================================
1、創建shpider數據庫(GBK編碼)
2、導入table.sql或者用admin/install.php安裝,可能數據庫創建會失敗
3、sphider/setting/database.php修改配置


三、結合
============================================
兩者部署無誤後,修改Sphider,找到admin文件夾下的spider文件,首先在開始加入代碼初始化分詞程序
    $cws = scws_new();  
    $cws->set_charset('gbk');  
    $cws->set_rule('/usr/local/scws/etc/rules.ini'); //注意路徑  
    $cws->set_dict('/usr/local/scws/etc/dict.xdb');  
    $cws->set_ignore(true);  

注意這裏使用的gbk,如果你的網頁用的utf8編碼,要把這裏以及詞典和規則文件的位置更改一下

 

在index_url函數中,把原有的英文分詞替換掉,在$wordarray = unique_array(explode(" ", $data

['content']));前面加上

    global $cws;
    $cws->send_text($data['content']);  
    $list = $cws->get_tops(1000, $xattr);  
    settype($list, 'array');  
    $wordarray=array();  
    $i=0;  
    // segment  
    foreach ($list as $tmp)  
    {         
        $wordarray[$i][1]=$tmp['word'];  
        $wordarray[$i][2]=$tmp['times'];  
        $i++;  
    }  

刪除
    $wordarray = unique_array(explode(" ", $data['content']));  

    $wordarray = calc_weights ($wordarray, $title, $host, $path, $data['keywords']);  

兩個語句,因爲Sphider原有的英文分詞這裏就完全沒必要用了,這裏可以自行對$wordarray進行限制和

優化,這裏我寫的很簡單。

 

修改完成後,爬蟲就能正常對中文進行分詞了,效果還不錯,注意如果出現亂碼注意網頁或者辭典編碼是

utf8還是gb2312。

把/sphider/templates/standard/header.html的charset改爲gb2312
發佈了328 篇原創文章 · 獲贊 9 · 訪問量 89萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章