在FreeBSD 上配置 Sphinx 搜索引擎

 在FreeBSD 上配置 Sphinx 搜索引擎 和 linux 上相比,会有一些差异,而且步骤可能会更加的繁琐。

有些可能无法用 make 系统进行编译,必须手动修改configure 文件,或者代码。或者只能手动编译。

1. 安装 Mmseg

http://www.coreseek.cn/uploads/sources/mmseg-0.7.3.tar.gz

  Mmseg 比较成熟,安装的过程一般不会出什么问题。但是还是有一些注意事项:

要下载最新的 0.7.3版本,否则可能会有下面的bug

1. 不兼容 x64 的操作系统,我的系统就是64位的,一编译,发现出问题了。

2. 可能有很多分词的bug,在中英文混合的时候,分词会非常的不准确。

要手动构造一下词典。如下命令:

mmseg -u unigram.txt

这就会产生一个 :unigram.txt.uni ,用如下的命令重命名:mv unigram.txt.uni uni.lib

2. 安装下面的程序:

更新最新的Port ,然后,升级或者安装下面的程序:

1. Python 2.5 以上

2. autoconf-2.4 以上

3. automake 1.10 以上

4. Bison 2.3 以上

5. Gmake 3.5 以上

6. Libtool 2.2 以上

当然,如果你编译过程中没有出现问题最好,但是,如果出现问题了,建议先升级以上程序。

如果以上软件都升级好了,下载最新 的 3.1 rc1 版本。(coreseek sphinx的改动版本)

http://www.coreseek.cn/uploads/csft/3.1/Source/csft-3.1.tar.gz

然后,编译。

我测试过,这个编译没有什么问题。

3、安装libsphinxclinet

如果要安装sphinx PHP扩展,就要事先编译libsphinxclinet。你要去官方网站下载最新的sphinx 程序。

Wget http://sphinxsearch.com/downloads/sphinx-0.9.9-rc2.tar.gz

Tar -xzf sphinx-0.9.9-rc2.tar.gz

Cd sphinx-0.9.9-rc2/api/libsphinxclinet

你不能直接编译这个程序,在linux 下面可以。但是,在FreeBSD 上并不可以。

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

这个错误怎么修改才能改好,我暂时没有去研究。一般来说,解决的方法可以这样:

1. gcc 命令直接编译。

2. automake 重新创建一份编译程序。

下面说明一下,如何用gcc 命令编译一份动态链接库。

库文件简介:

简单地说,库(Library)就是一组已经写好了的函数和变量、经过编译代码,是为了能够提高开发效率和运行效率而设计的。库分为静态库(Static Library)和共享库(Shared library)两类。静态库文件的扩展名是.a,共享库文件的扩展名是.so(在CYGWIN环境下,分别叫做.o.dll)。共享库现在常常被叫做动态库,是由于很多人借用了MS WindowsDLLDynamic Linked Library)这个词。

1)静态库

     静态是指每个用到该库的应用程序都拥有一份自己的库拷贝;应用程序运行的时候,即使将库删除也没有问题,因为应用程序自己已经有了自己的拷贝。

2)共享库

     一个共享库有可能被多个所有应用程序共享。因此,对每个应用程序来说,即使不再使用某个共享库,也不应将其删除。此外,应用程序需要正确的环境变量设置(LD_LIBRARY_PATH),从而找到共享库所在的位置,否则,应用程序运行时会报告找不到这个库。

一般来说,如果库本身比较大的话,最好编译成 共享库,否则,联合编译后,文件会变的比较大。对于上面的 libclientsphinx ,应为规模比较小,编译成静态的或者动态的都可以。我这里选择编译成动态的:

mv sphinx_config,h.in sphinx_config.h

gcc -c -fPCI sphinx.c

gcc -shared -fPIC -o libsphinxclient.so sphinx.o

Mv libsphinxclient.so  /usr/local/lib

Mv sphinx.h /usr/local/include

这样就可以编译成功了。

编译PHP 就比较简单了

Cd /ext path/sphinx

Phpize

./configure --with-php-config=/usr/local/bin/php-config --with-sphinx=/usr/local

Make

make install

这样就OK 了。当然,如果你的extension_path 改动过的话,把编译好的扩展放到合适的位置上去。

posted @ 2009-10-20 13:36  暮夏  阅读(646)  评论(0编辑  收藏  举报