Sphinx安装

2.1. 支持的操作系统

在绝大多数现代的Unix类操作系统(例如Linux、BSD等)上,只需要一个C++编译器和基本的系统工具就可以编译并运行CoreSeek/Sphinx,而不需要对源码进行任何改动。

目前,CoreSeek/Sphinx可以在以下系统上运行:

  • Linux 2.4.x, 2.6.x (包括各种发行版,如Redhat、Centos、Fedora、Gentoo、Debian、Ubuntu、Slackware、OpenSuse、ArchLinux等)

  • Windows 2000, 2003, XP, Vista, Windows7, Windows2008

  • FreeBSD 4.x, 5.x, 6.x, 7.x,8.x

  • NetBSD 1.6, 3.0,4.x,5.x

  • Solaris 9, 11

  • Mac OS X


支持的CPU种类包括 X86, X86-64, AMD64, SPARC64。目前经过实际测试可以在主流BSD平台、Linux平台和Windows平台运行,详情可以查看Coreseek测试运行环境列表。

我们希望CoreSeek/Sphinx也能够在其他的类Unix操作系统平台上工作,为所有需要解决中文搜索问题的用户服务,如果你运行CoreSeek/Sphinx索使用的操作系统不在上面的名单中,请告诉我们(HonestQiao, )。

目前的阶段,CoreSeek/Sphinx的Windows版可用于测试、调试和普通生产环境,但不建议用于负载量较大的生产系统。限于Windows 操作系统自身的限制,最突出的两个问题是:1)并发查询的支持不好;2)缺少索引数据热切换的支持。虽然目前已经有用户成功的在生产环境克服了这两个问 题,但是我们仍然不推荐在Windows下运行CoreSeek/Sphinx提供高强度的搜索服务。我们推荐使用Linux或者BSD作为运行的操作系 统平台,并可提供Linux、BSD系统下针对性的系统架构和性能优化支持服务。

2.2. 需要的工具

在类UNIX操作系统平台上,你需要以下的工具用来编译和安装CoreSeek/Sphinx:

  • C++编译器。GNU gcc 就能够干这个活.

  • make程序。GNU make 就能够干这个活.

  • iconv库。GNU libiconv 就能够提供支持.

  • Python2.6(如果启用Python数据源支持)

在Windows平台上,你需要Microsoft Visual C/C++ Studio .NET 2003 或者 2005 或者 2008。如果你还需要使用Python数据源,推荐安装ActiveState Python2.6。其他的编译器/开发环境也许也能搞定这件事,但你可能需要自己手工制作他们所需的Makefile或者工程文件。

2.3. 在Linux、BSD上安装CoreSeek/Sphinx

  1.                     将你下载的tar包解压,并进入coreseek 子目录: (我们在例子中使用的2.0.1-beta版本;你要根据你所使用的实际版本对指令和路径进行对应的修改)

    $ tar xzvf sphinx-2.0.1-beta.tar.gz
    $ cd sphinx

  2. 首先安装MMSeg:

                   

    $ cd mmseg

                   

    $ ./configure --prefix=/usr/local/mmseg

    $ make

    $ make install

    $ cd ..

               


    运行配置 程序:

    $ ./configure

                        configure程序有很多运行选项。完整的列表可以通过使用 --help 开关得到。最重要的如下:


    • --prefix, 定义将Coreseek安装到何处;比如--prefix=/usr/local/sphinx(以下全部示例都假定Coreseek安装在这个位置)

    • --with-mysql, 当自动检测失败时,需要指出在那里能找到MySQL 头文件和库文件;

    • --with-pgsql指出在那里能找到PostgreSQL头文件和库文件.

    • --with-mmseg, 启用基于MMSeg的中文分词法,并指出在那里能找到MMSeg头文件和库文件.

    • --with-python, 启用Python数据源支持. 需要预先安装Python2.6.

  3. 编译源代码生成二进制程序:

    $ make

  4. 安装二进制程序到你设定的目录下: (类Unix操作系统下默认为/usr/local/bin/ , 但是可以被 ./configure --prefix修改安装目录)

    $ make install

2.4. 在Windows上安装CoreSeek/Sphinx

在Windows上安装通常比在Linux环境下容易一些。要不是为了给代码制作patch,一般安装预先编译好的二进制文件即可,它们可以在网站的下载区找到.

  1. 将你下载的.zip文件解压,比如sphinx-2.0.1-beta-win32.zip, 或者 sphinx-2.0.1-beta-win32-pgsql.zip 如果你需要PostgresSQL支持。 (我们在例子中使用的2.0.1-beta版本;你要根据你所使用的实际版本对指令和路径进行对应的修改) Windows XP及其后续版本都可以直接解压.zip压缩包,用免费的解压缩程序也可,比如 7Zip.

    在本教程的其余部分,我们假定上述压缩包被解压到C:\Sphinx, 这样 searchd.exe 对应的路径就是 C:\Sphinx\bin\searchd.exe. 如果你打算给安装目录或者配置文件用个不同的路径,请在相应的地方自行修改路径。

  2. 编辑 sphinx.conf.in - 需要修改@CONFDIR@相关项目 - 针对你的系统的实际情况进行修改.

  3. searchd 服务安装成一个Windows服务:

    C:\Sphinx\bin> C:\Sphinx\bin\searchd --install --config C:\Sphinx\sphinx.conf.in --servicename SphinxSearch

  4. 这样 searchd 服务应该出现在“控制面板->系统管理->服务”的列表中了,但还没有被启动,因为在启动它之前,我们还需要做些配置并用indexer 建立索引 .

    在接下来的安装步骤(其中最多涉及到的是类似在Linix环境下运行indexer命令 )中,你可能会得到一个有关libmysql.dll没有找到的错误提示。 如果安装过MySQL,你应该找一个Windows系统目录中, 或者有时在Windows \ System32目录中,或者在MySQL的安装目录中,找到libmysql.dll文件。如果你 确实收到一个这样的错误,请将找到的libmysql.dll拷贝到bin目录中。

2.5. 已知的安装问题和解决办法

如果 configure 程序没有找到MySQL 的头文件和库文件,, 请试试检查是否安装了 mysql-devel 或者 mysql-client 依赖包. 在有些系统上,默认安装包括这个包. 类似如此,libiconv等也可能会有类似的提示。

如果 make 程序给出如下错误提示

/bin/sh: g++: command not found
make[1]: *** [libsphinx_a-sphinx.o] Error 127

请检查是否安装了gcc-c++ 包.

如果你在编译时得到如下错误

sphinx.cpp:67: error: invalid application of `sizeof' to
    incomplete type `Private::SizeError<false>'

这意味着某些编译时的类型检查失败了,一个最有可能的原因是在你的系统上类型off_t的长度小于64bit。一个快速的修复手段是,你可以修改 src/sphinx.h ,将在定义类型SphOffset_t 处,将off_t 替换成DWORD,需要注意,这种改动将使你的全文索引文件不能超过2GB。即便这种修改有用,也请汇报这一问题,在汇报中请包括具体的错误信息以及操作 系统编译器的配置情况。这样,我们可能能够在下一个版本中解决这一问题。

如何你遇到了其他的任何问题,或者前面的建议对你没有帮助,别犹豫,请立刻联系我们.

2.6. CoreSeek/Sphinx快速入门教程

以下所有的例子都假设你将CoreSeek/Sphinx安装在目录  /usr/local/sphinx, 并且searchd 对应的路径为 /usr/local/sphinx/bin/searchd.

为了使用CoreSeek/Sphinx,你需要:

  1. 创建配置文件.

                        缺省的配置文件名为 sphinx.conf. 全部的CoreSeek/Sphinx提供的程序默认都在当前工作的目录下寻找该文件.

                        由configure 程序生成的示例配置文件sphinx.conf.dist 中包括全部选项的注释,复制并编辑这个文件使之适用于你的具体情况: (请确认 CoreSeek/Sphinx 安装在 /usr/local/coreseek/)

    $ cd /usr/local/sphinx/etc
    $ cp sphinx.conf.dist sphinx.conf
    $ vi sphinx.conf

                        在示例配置文件中,将试图对MySQL数据库test中的 documents 表建立索引;因此在这里还提供了 example.sql 用于给测试表增加少量数据用于测试:

    $ mysql -u test < /usr/local/sphinx/etc/example.sql

  2. 运行indexer 为你的数据创建全文索引:

    $ cd /usr/local/sphinx/etc
    $ /usr/local/sphinx/bin/indexer --all

  3. 检索你新创建的索引!

你可以使用search(注意,是search而不是searchd)实用程序从命令行对索引进行检索:

$ cd /usr/local/sphinx/etc
$ /usr/local/sphinx/bin/search test

如果要从PHP脚本检索索引,你需要:

  1. 运行守护进程searchd,PHP脚本需要连接到searchd上进行检索:

    $ cd /usr/local/sphinx/etc
    $ /usr/local/sphinx/bin/searchd

  2.                     运行PHP API 附带的test 脚本(运行之前请确认searchd守护进程已启动):

    $ cd sphinx/api
    $ php test.php test

  3.                     将API文件(位于api/sphinxapi.php) 包含进你自己的脚本,开始编程.

祝你搜索愉快!