前言:
为了折腾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=
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
, 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 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日
博客被黑,挪窝安家……