Centos7.0下Coreseek + Sphinx 安装及配置,报错解决

匿名 (未验证) 提交于 2019-12-02 22:59:29

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

大功告成了!!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!