前言:
為了折騰PHP分詞從Windows版本到Linux版本爬了一個又一個的坑,SCWS 中文分詞目前已經很快地與時俱進——立馬支持了性能高出老版PHP整整3倍的PHP7,同時更新了2016版詞庫。本文主要列出一個安裝紀要及部分困惑點的解決方法,供大家更方便的使用SCWS-1.2.3分詞工具,避開坑與雷,同時也感謝作者的無私奉獻,有你網絡更精彩!
環境:
CentOS7.0 64bit
Web環境為LNMP
基于yum擴展源remi安裝的Php7.0(php70-php-fpm)和Php5.5(php55-php-fpm)兩PHP版本共存環境(需要了解如何安裝共存環境的將另外發布攻略)
一、工具本身的安裝
1、在官方網站下載SCWS 中文分詞(http://www.xunsearch.com/scws/download.php)
Linux系的系統直接用下面的命令操作(本人用的是CentOS7 64bit):
wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
2、 解開壓縮包
[root@AY8152859Z ~]# tar xvjf scws-1.2.3.tar.bz2
3、 進入目錄執行配置腳本和編譯
[root@AY8152859Z ~]# cd scws-1.2.3[hightman@d1 ~/scws-1.2.3]$ ./configure --prefix=/usr/local/scws ; make ; make install
注:這里和通用的 GNU 軟件安裝方式一樣,具體選項參數執行 ./configure --help 查看。
常用選項為:--prefix=<scws的安裝目錄>
4、 順利的話已經編譯并安裝成功到 /usr/local/scws 中了,執行下面命令看看文件是否存在
[root@AY8152859Z ~]# ls -al /usr/local/scws/lib/libscws.la
5、 試試執行 scws-cli 文件看有沒有返回正確的信息
[root@AY8152859Z ~]# /usr/local/scws/bin/scws -h
scws (scws-cli/1.2.3)
Simple Chinese Word Segmentation - Command line usage.
Copyright (C)2007 by hightman.
...
6、用 wget 下載并解壓詞典,或從主頁下載然后自行解壓再將 *.xdb 放入 /usr/local/scws/etc 目錄中
[root@AY8152859Z ~]# cd /usr/local/scws/etc
[root@AY8152859Z ~]# wget http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2
[root@AY8152859Z ~]# wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2
[root@AY8152859Z ~]# tar xvjf scws-dict-chs-gbk.tar.bz2
[root@AY8152859Z ~]# tar xvjf scws-dict-chs-utf8.tar.bz2
理論上SCWS-1.2.3分詞工具安裝完畢,寫C的同鞋可以寫段官方提供的小程序測試一下分詞效果。
二、SCWS-1.2.3分詞工具的Php插件安裝
首先,讓我們來了解下官方在安裝前的準備工作中模糊提到的幾個概念吧:
autoconf:
是一個shell腳本的工具,可以自動地配置軟件源代碼包以適應多種UNIX類系統。由autoconf生成的配置腳本在運行的時候不需要用戶的手工干預;通常它們甚至不需要手工給出參數以確定系統的類型。其中autoconf需要用到m4,便于生成腳本。
版本檢測:
# autoconf --version
autoconf (GNU Autoconf) 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
automake:
是一個從文件Makefile.am自動生成Makefile.in的工具。每個Makefile.am基本上是一系列make的宏定義。生成的Makefile.in,服從GNU Makefile標準。為了生成Makefile.in,automake還需用到perl(它本身就是一個perl程序)。
版本檢測:
# automake --version
automake (GNU automake) 1.13.4
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Phpize:
phpize是用來擴展php模塊的,通過phpize可以熱編譯php的PECL擴展模塊 。一般情況是編譯php時忘記添加某擴展,后來想添加擴展,而你又不想刪除目錄重裝PHP的話,就可以使用phpize,比如你想在原來已經編譯好可以正常運行的php中加入memcached或者別的擴展模塊等。
英文好的朋友可以參看官方文檔:http://php.net/manual/en/install.pecl.phpize.php
幸運的是CentOS7.0 64bit系統已經自帶了上述兩個工具,如何安裝上述兩款工具我就不在此展開了,感興趣的朋友可以檢索下《Linux下的Autoconf和AutoMake》這篇文章,那么接下來就只有Phpize這個問題了。
phpize在哪里?
現在的狀況是本機的Php壞境是用的yum擴展源Remi直接安裝的,當時的安裝命令用的是:
`# yum --enablerepo=remi install php55-php-fpm~和 ~# yum --enablerepo=remi install php70-php-fpm~
上面兩個包安裝時會自動附加運行PHP時必要的依賴安裝文件,相當于PHP的極簡安裝包,但是正是這個極簡安裝包在我們需要做擴展的時候就成了障礙了。
phpize一般在PHP安裝目錄的bin/目錄下,但是,當我定位到安裝目錄/opt/remi/php55/root/時并沒有發現bin目錄里有任何文件或文件夾,Php7的情況同樣如此,目錄/opt/remi/php7/root/bin/下面沒有任何東西。因此我在想Remi源這么多用戶因該是有解決方案的,所以檢索了Remi源下所有的與之相關的擴展包的情況,果然有發現:
php55.x86_64 : Package that installs PHP 5.5
php70.x86_64 : Package that installs PHP 7.0
我試著安裝了上面兩個包,這兩個包安裝后并不會影響到原來安裝和配置好的PHP環境,且解決了沒有phpize的問題。
安裝命令如下(Php5.5):
# yum --enablerepo=remi install php55.x86_64
或者你如果是Php7.0的話就用如下命令:
# yum --enablerepo=remi install php70.x86_64
補充:
上面解決了沒有Phpize的問題,但在編譯生成插件時還是出現了錯誤提示需要php-devel版本的包,因此,我又安裝了下面的Php-Devel包,在沒有破壞原有Php環境的前提下無縫地、圓滿地解決問題。不過,理論上講應該用不著裝上面的php55.x86_64的包,只用裝php55-php-devel.x86_64這個就可以了,鑒于時間關系只能以后再試了。
php55-php-devel.x86_64 : Files needed for building PHP extensions
php70-php-devel.x86_64 : Files needed for building PHP extensions
安裝命令如下(Php5.5):
# yum --enablerepo=remi install php55-php-devel.x86_64
如果你是Php7.0的話就用如下命令:
# yum --enablerepo=remi install php70-php-devel.x86_64
好了,這里講完了安裝scws分詞工具php插件的安裝前提,接下來我們將開始正式用phpize編譯安裝Php的SCWS插件了!
Tag:Php分詞, SCWS, 分詞技術
發布時間:2015年10月21日
博客被黑,挪窩簡書安家……