1.mmseg中文分词的解压安装
一、安装前提必备先安装工具
yum -y install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
1.进入安装包存放路径/usr/local/src,准备coreseek安装包
cd /usr/local/src wget http://pppboy.com/wp-content/uploads/2016/02/coreseek-3.2.14.tar.gz
2.解压安装
tar zxvf coreseek-3.2.14.tar.gz
3.进入目录
cd coreseek-3.2.14/mmseg-3.2.14/
4.执行以下命令
./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决 ./configure --prefix=/usr/local/mmseg3 make make install
注意:
#如果make之后,出现以下提示
libtool: Version mismatch error. This is libtool 2.4.2, but the libtool: definition of this LT_INIT comes from libtool 2.2.6b. libtool: You should recreate aclocal.m4 with macros from libtool 2.4.2 libtool: and run autoconf again. make[5]: *** 1 Error 63
#这是因为libtool使用的版本不一致导致的,解决如下:
执行以下命令
# rm -rf aclocal.m4 # Autoreconf # ./configure --prefix=/usr/local/mmseg3 # cp /usr/bin/libtool ./ # make && make install
安装好了之后,来检测下是不是安装成功
执行
cd /usr/local/mmseg3/bin/ ./mmseg
这就是mmseg中文分词安装成功
2.结下来安装sphinx,让sphinx和mmseg结合起来
先执行
yum install mysql-devel
再执行
cd ./coreseek-3.2.14/csft-3.2.14 ./configure --prefix=/usr/local/coreseek --with-mysql --with-mmseg=/usr/local/mmseg3/ --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/
如果报错:configure: error: invalid MySQL root directory ‘/etc/mysql’; neither bin/mysql_config, nor include/ and lib/ were found there
是少一安装包,安装下面包:
# yum install mysql-devel
再重新编译执行上面的命令,然后执行
# ./configure --prefix=/usr/local/coreseek
如果报错
执行
# ./configure --prefix=/usr/local/coreseek --without-mmseg option.
执行
# make && make install
上面错误是 ,coreseek 因 gcc 版本大于 4.7导致安装失败,解决方法:
手动修改文件:
编辑sphinxexpr.cpp
vi src/sphinxexpr.cpp
将所有的:
T val = ExprEval ( this->m_pArg, tMatch );
替换成
T val = this->ExprEval ( this->m_pArg, tMatch );
保存然后重新编译就ok了!
make && make install
3.配置带有中文分词的sphinx配置文件
cd /usr/local/coreseek/etc cp sphinx.conf.dist csft.conf vi csft.conf
或者把索引文件覆盖过来
####配置概要#### #配置一个名字叫main的主数据源,main可以自己定,这里就叫main,把src1修改成main就可以,修改的配置如下: source main { sql_host = localhost #mysql主机ip sql_user = test #mysql用户名 sql_pass = 123456 #mysql 密码 sql_db = test #数据库名 sql_port = 3306 #端口 sql_sock = /tmp/mysql.sock #如果是linux下需要开启,指定sock文件 sql_query_pre = SET NAMES utf8 #mysql检索编码 sql_query_pre = SET SESSION query_cache_type=OFF #关闭缓存 sql_query= \ #获取数据的sql语句 SELECT id,name,pid FROM people #sql_attr_uint = group_id #对排序的字段进行注释掉 #sql_attr_timestamp = date_added #对排序的字段进行注释掉 #sql_query_info = SELECT * FROM post WHERE id=$id } #今天先不讲增量数据源,先把它关闭 #source src1throttled : src1 #{ # sql_ranged_throttle = 100 #} #接下来配置主数据索引,名字也叫main,把index test1修改下即可 index main { source = main #主数据源名称 path = /usr/local/webserver/sphinx/var/data/main #生成索引的名字,也叫main #stopwords = G:\data\stopwords.txt #wordforms = G:\data\wordforms.txt #exceptions = /data/exceptions.txt charset_type = zh_cn.utf-8 charset_dictpath = /usr/local/mmseg3/etc #中文分词所在的路径 } #增量索引和分布式索引也先注释,先不用它 #这里推荐个小技巧,用快的方法加注释 #:set nu #:627,631s/^/#/g (给627到631行的代码,添加注释) #index test1stemmed : test1 #{ # path = /usr/local/webserver/sphinx/var/data/test1stemmed # morphology = stem_en #} # index dist1 #{ #分布式索引也给注释掉 .... #} #接下来修改索引器 indexer { mem_limit = 128M #(这里是128m,根据实际情况而定) } #接下来是searchd searchd { ...根据默认的就可以,这里不用修改 } ####配置概要#### 好了之后,修改配置完毕,保存退出 :x
4.到bin底下生成索引:
cd /usr/local/coreseek/bin /usr/local/coreseek/bin/indexer --all
那是因为,mysql的查询缓存没有开启,需要开启一下,修改vi /etc/my.cnf配置文件,添加query_cache_type = 1配置,重启mysql即可。 systemctl restart mysqld
5.测试查找索引
/usr/local/coreseek/bin/search php
重新生成下索引,再查找下中文关键字:
/usr/local/coreseek/bin/indexer --all
6.安装php的sphinx模块,进行代码测试
#下载sphinx模块包
wget http://pecl.php.net/get/sphinx-1.0.4.tgz tar zxf ./sphinx-1.0.4.tgz cd sphinx-1.0.4 phpize
#需要先安装libsphinxclient,到刚才下载的coreseek目录下
cd ../coreseek-3.2.14/csft-3.2.14/api/libsphinxclient ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
#这时候提示报错
configure: error: Cannot find libsphinxclient headers
#需要先安装libsphinxclient,到刚才下载的coreseek目录下
cd ../coreseek-3.2.14/csft-3.2.14/api/libsphinxclient ./configure make && make install
#安装完了libsphinxclient之后,再安装php的sphinx扩展
cd ../../../../sphinx-1.0.4 ./configure --with-php-config=/usr/bin/php-config --with-sphinx make && make install
这里有个报错,修改 sphinx.c 第105行为:
vi ./sphinx.c
#把
retval = std_hnd->read_property(object, member, type TSRMLS_CC);
#修改成
retval = std_hnd->read_property(object, member, type TSRMLS_CC, NULL);
#再编译安装就可以完美解决
vi /etc/php.ini 添加:extension=sphinx.so
停止sphinx服务:
/usr/local/coreseek/bin/searchd --stop
开启sphinx:
/usr/local/coreseek/bin/searchd
查看phpinfo
大功告成了!!