首页 > 代码库 > Mac OS X 10.9.4 安装全文索引 Coreseek-3.2.14稳定版 问题及解决

Mac OS X 10.9.4 安装全文索引 Coreseek-3.2.14稳定版 问题及解决

根据coreseek官方文档安装:

http://www.coreseek.cn/products-install/install_on_macosx/

(1)在安装mmseg过程中,进行make操作的时候,突然报了以下错误信息:

n file included from css/ThesaurusDict.cpp:6:
../src/css/ThesaurusDict.h:12:17: error: expected namespace name
using namespace __gnu_cxx;
^
css/ThesaurusDict.cpp:79:15: warning: result of comparison against a string
literal is unspecified (use strncmp instead) [-Wstring-compare]
if (filename == "-") {
^ ~~~
css/ThesaurusDict.cpp:116:15: warning: result of comparison against a string
literal is unspecified (use strncmp instead) [-Wstring-compare]
if (filename != "-") {
^ ~~~
2 warnings and 1 error generated.
make[2] : *** [ThesaurusDict.lo] Error 1
make[1]: *** [install-recursive] Error 1

经过搜寻资料,最后得知是因为编译器版本太高导致的,那我也不想去降低编译器的版本,通过修改源代码,解决了该问题:
进入到源代码包目录:即coreseek-3.2.14所在目录,cd mmseg-3.2.14/src/css,找到文件:ThesaurusDict.h
在头部找到:#include <string>
再其下加入一行代码:#include <ext/hash_map>
再回到mmseg-3.2.14目录,执行make编译操作,顺利完成,最后就可以接着执行安装操作了。


(2)OK,mmseg中文分词是安装完成了,此时接着安装sphinx,编译的过程中,又遇到了问题:

phinxexpr.cpp:1047:11: error: use of undeclared identifier ‘ExprEval‘
                T val = ExprEval ( this->m_pArg, tMatch ); // ‘this‘ fixes gcc ...

编译过程中,出现了无数个关于此函数:ExprEval(this->m_pArg, tMatch)的错误,进入:cd csft-3.2.14/src目录,找到源代码:sphinxexpr.cpp文件,
搜索:ExprEval ( this->m_pArg, tMatch )此函数,将该文件的所有关于此函数ExprEval ( this->m_pArg, tMatch )的调用,在其前面加上this->对象,即替换为:

this->ExprEval ( this->m_pArg, tMatch );

再执行make编译操作,此时顺利完成编译,接着就能执行make install 安装操作了。
这个问题也是由于gcc编译器版本的问题导致了。
接着再结合coreseek官方文档,完成测试操作。

(3)测试时,

$ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all

报错:

dyld: Library not loaded: libmysqlclient.18.dylib
  Referenced from: /usr/local/coreseek/bin/indexer
  Reason: image not found
Trace/BPT trap: 5

解决办法是:

$ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib