Sphinx 在 Centos 上的安装与配置
一、Sphinx简介

Sphinx 是一个开源的全文检索引擎,能够实现高效的全文搜索功能,它支持多种数据源,包括 SQL 数据库、纯文本文件、HTML 文件和邮件等,Sphinx 具有高索引和搜索性能、高级索引和查询工具、可扩展性以及易于与 SQL 和 XML 数据源集成等特点。
二、安装前准备
系统要求
操作系统:CentOS 7 及以上
依赖项:需要安装一些基本的依赖包,如postgresqllibs
和UnixODBC
等。
下载并安装必要的软件包
- sudo yum install y postgresqllibs unixODBC
三、安装 Sphinx
下载 Sphinx 最新版本
移动到临时目录并下载 Sphinx 的文件:

- cd /tmp
- wget http://sphinxsearch.com/files/sphinx2.2.111.rhel7.x86_64.rpm
使用 YUM 安装 Sphinx
- sudo yum install y sphinx2.2.111.rhel7.x86_64.rpm
至此,Sphinx 已成功安装在您的服务器上,我们需要进行配置。
四、创建测试数据库
为了测试 Sphinx 是否工作正常,我们将创建一个包含示例数据的测试数据库。
登录 MySQL
- mysql u root p
在提示时输入您的 MySQL root 用户的密码。
创建数据库
- CREATE DATABASE test;
导入示例 SQL 文件
- SOURCE /usr/share/doc/sphinx2.2.11/example.sql;
然后退出 MySQL shell:
- quit;
现在您已经有一个填充了示例数据的数据库,可以用于测试 Sphinx 搜索。

五、配置 Sphinx
移动现有配置文件
- sudo mv /etc/sphinx/sphinx.conf /etc/sphinx/sphinx.conf2
创建新的配置文件
使用 vi 或其他文本编辑器创建一个新的配置文件:
- sudo vi /etc/sphinx/sphinx.conf
复制并粘贴到文件中:
- source src1 {
- type = mysql
- sql_host = localhost
- sql_user = root
- sql_pass = password
- sql_db = test
- sql_port = 3306
- sql_query = \
- SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
- FROM documents
- }
- index test1 {
- source = src1
- path = /var/lib/sphinx/test1
- docinfo = extern
- }
- searchd {
- listen = 9306:mysql41
- log = /var/log/sphinx/searchd.log
- query_log = /var/log/sphinx/query.log
- }
请根据实际情况修改sql_user
,sql_pass
和sql_query
中的表名和字段名。
启动 Sphinx 服务
- sudo systemctl start searchd
如果需要在系统启动时自动启动 Sphinx 服务,可以运行以下命令:
- sudo systemctl enable searchd
六、验证安装与配置
检查 Sphinx 服务状态
- sudo systemctl status searchd
如果一切正常,您应该会看到 Sphinx 正在运行。
使用 SphinxQL 进行测试
您可以使用 SphinxQL 客户端连接到 Sphinx 并进行搜索测试:
- sphinxql u root ppassword prompt
然后在提示符下输入搜索查询,
- SELECT * FROM test1 WHERE MATCH('your search query');
如果一切正常,您应该能看到搜索结果。
七、常见问题及解答(FAQs)
Q1. Sphinx 无法启动怎么办?
A1. Sphinx 无法启动,请首先检查配置文件中的错误,可以使用以下命令查看日志文件:
- cat /var/log/sphinx/searchd.log
根据日志文件中的错误信息进行相应的修正,常见的问题包括配置错误、权限不足或端口被占用等。
Q2. 如何更改 Sphinx 的数据源?
A2. 要更改 Sphinx 的数据源,只需编辑/etc/sphinx/sphinx.conf
文件中的source
块即可,如果您想从 PostgreSQL 数据库中获取数据,可以将type
改为pgsql
,并相应地调整其他参数,完成后重新启动 Sphinx 服务使更改生效:
- sudo systemctl restart searchd