源代码: http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
依赖
1 |
apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev |
补丁
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
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; } |
打补丁方法,进入需要打补丁的源代码目录
1 |
patch -p1 </path/to/coreseek.patch |
补丁总结自具体修改主要参考这个文章 http://blog.csdn.net/jcjc918/article/details/39032689
Gist备份:https://gist.github.com/ihipop/fcea2993cc567e060d36
编译参数
##安装mmseg
编译mmseg暂时没有什么压力,按照官方文档来
1 2 3 4 |
$ cd mmseg-3.2.14 $ ./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决 $ ./configure --prefix=/usr/local/mmseg3 $ make && make install |
编译csft(Coreseek) 按照上面的方法打了补丁以后 可以在gcc4.7+以上正常编译
1 2 3 4 |
$ 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以后进行
1 2 3 4 5 6 7 8 9 10 |
$ 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)
1 |
listen = 9306:mysql41 |
配置完了配置文件放到 /usr/local/coreseek/etc下,先运行indexer建立索引,再开启searched即可
1 2 |
/usr/local/coreseek/bin/indexer -c etc/csft_mysql.conf --all /usr/local/coreseek/bin/searchd -c etc/csft_mysql.conf |
如果增量更新索引,用执行 indexer的时候 加上 --rotate
选项即可
端口监听打开了就OK了