转载

Sphinx/Coreseek 4.1 beta on Ubuntu14.04 LTS (gcc4.7+)

源代码: http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz

依赖

Shell

apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev   libxml2-dev libexpat1-dev

补丁

diff

diff -ruN coreseek-4.1-beta/csft-4.1/buildconf.sh coreseek-4.1-beta.p0/csft-4.1/buildconf.sh --- coreseek-4.1-beta/csft-4.1/buildconf.sh 2011-10-07 20:08:56.000000000 +0800 +++ coreseek-4.1-beta.p0/csft-4.1/buildconf.sh 2015-07-22 15:35:21.268304991 +0800 @@ -2,5 +2,5 @@    autoheader /  && aclocal / -&& automake --foreign / +&& automake --add-missing --foreign /  && autoconf diff -ruN coreseek-4.1-beta/csft-4.1/configure.ac coreseek-4.1-beta.p0/csft-4.1/configure.ac --- coreseek-4.1-beta/csft-4.1/configure.ac 2011-10-07 20:08:57.000000000 +0800 +++ coreseek-4.1-beta.p0/csft-4.1/configure.ac 2015-07-22 15:39:35.112302678 +0800 @@ -10,7 +10,7 @@  SPHINX_CONFIGURE_PART([checking build environment])    AC_CONFIG_AUX_DIR([config]) -AM_INIT_AUTOMAKE([-Wall -Werror foreign]) +AM_INIT_AUTOMAKE([-Wall foreign])  AM_MAINTAINER_MODE  AM_PATH_PYTHON  AC_CONFIG_SRCDIR([src/searchd.cpp]) @@ -59,6 +59,7 @@  AC_PROG_CC  AC_PROG_CXX  AC_PROG_RANLIB +AM_PROG_AR    dnl Checks for embedded interpretors.  INN_ARG_PYTHON diff -ruN coreseek-4.1-beta/csft-4.1/src/sphinxexpr.cpp coreseek-4.1-beta.p0/csft-4.1/src/sphinxexpr.cpp --- coreseek-4.1-beta/csft-4.1/src/sphinxexpr.cpp 2011-10-07 20:08:58.000000000 +0800 +++ coreseek-4.1-beta.p0/csft-4.1/src/sphinxexpr.cpp 2015-07-22 15:40:27.764302198 +0800 @@ -1743,7 +1743,7 @@   /// evaluate arg, return interval id   virtual int IntEval ( const CSphMatch & tMatch ) const   { -  T val = ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage +  T val = this->ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage    ARRAY_FOREACH ( i, this->m_dValues ) // FIXME! OPTIMIZE! perform binary search here     if ( val<this->m_dValues[i] )      return i; @@ -1774,7 +1774,7 @@   /// evaluate arg, return interval id   virtual int IntEval ( const CSphMatch & tMatch ) const   { -  T val = ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage +  T val = this->ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage    ARRAY_FOREACH ( i, m_dTurnPoints )     if ( val < Expr_ArgVsSet_c<T>::ExprEval ( m_dTurnPoints[i], tMatch ) )      return i; @@ -1820,7 +1820,7 @@   /// evaluate arg, check if the value is within set   virtual int IntEval ( const CSphMatch & tMatch ) const   { -  T val = ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage +  T val = this->ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage    return this->m_dValues.BinarySearch ( val )!=NULL;   }

打补丁方法,进入需要打补丁的源代码目录

Shell

patch -p1 </path/to/coreseek.patch

补丁总结自具体修改主要参考这个文章 http://blog.csdn.net/jcjc918/article/details/39032689

Gist备份: https://gist.github.com/ihipop/fcea2993cc567e060d36

编译参数

##安装mmseg编译mmseg暂时没有什么压力,按照官方文档来

Shell

$ cd mmseg-3.2.14 $ ./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决 $ ./configure --prefix=/usr/local/mmseg3 $ make && make install

编译csft(Coreseek) 按照上面的方法打了补丁以后 可以在gcc4.7+以上正常编译

Shell

$ cd csft-4.1 $ sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决 $./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql make && make install

测试用例还是官方用例 调节locale成zh_CN.UTF-8以后进行

Shell

$ cd testpack $ cat var/test/test.xml    #此时应该正确显示中文 #检测分词功能是否正常 $ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml #建立全部数据源索引 $ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all #搜索测试 $ /usr/local/coreseek/bin/search -c etc/csft.conf  #指定关键词的搜索测试 其中,搜索服务是关键词 成功的话会进行分词和结果展示,如果不正常 说明配置有问题。 $ /usr/local/coreseek/bin/search -c etc/csft.conf -a  搜索服务

mysql数据源的配置方法和普通Sphinx差别不大,配置目录下有个csft_mysql.conf 照着改改以后按照上面的方法重建索引以后就能进行测试。

需要注意的是,这个文件没有打开SphinxQL支持 可以在searched段落打开,添加 监听即可(其实还是sphinx的官方配置参数 http://sphinxsearch.com/docs/archives/2.0.1/confgroup-searchd.html )

Shell

listen          = 9306:mysql41

配置完了配置文件放到 /usr/local/coreseek/etc下,先运行indexer建立索引,再开启searched即可

Shell

/usr/local/coreseek/bin/indexer -c etc/csft_mysql.conf --all /usr/local/coreseek/bin/searchd -c etc/csft_mysql.conf

如果增量更新索引,用执行 indexer的时候 加上 --rotate 选项即可

端口监听打开了就OK了

正文到此结束
Loading...