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

你可能感兴趣的:(数据库,PHP,list,服务器,脚本,extension)