云网牛站
所在位置:首页 > Linux云数据库 > Ubuntu安装配置Sphinx

Ubuntu安装配置Sphinx

2017-10-20 15:10:49作者:Linux编辑稿源:topspeedsnail

Sphinx是开源的全文本检索引擎,它以高效搜索大数据而闻名。它能从不同的数据源生成索引:数据库(MySQL,PostgreSQL),纯文本文件、HTML文件等等。

 

Sphinx的主要特性:

检索速度快

高级索引和查询工具

高级结果集后处理(post-processing)

支持数据量大,每秒钟可以执行几千次查询

非常容易集成SQL和XML数据源,和SphinxQL、SphinxAPI、SphinxSE检索接口

容易扩展为分布式搜索

 

下面我们安装Sphinx和MySQL,然后使用SQL例子文件测试,熟悉Sphinx的基本流程。

 

第一步、安装MySQL

如果你没有安装MySQL,安装MySQL:

sudo apt-get update

sudo apt-get install mysql-server

安装过程中应该需要输入root密码。

 

第二步、安装Sphinx

执行如下命令:

sudo apt-get install sphinxsearch

安装完成之后不急着启动,我们还需要配置sphinx。

 

第三步、创建测试数据库

测试数据库使用sphinx自带的SQL文件,需要把它导入到MySQL中。

登录到MySQL命令行:

mysql -u root -p

输入root密码,命令行提示符改为 mysql>。

创建一个叫test的数据库:

mysql> CREATE DATABASE test;

导入测试SQL文件:

mysql> SOURCE /etc/sphinxsearch/example.sql;

退出MySQL命令行:

mysql> quit

现在test数据库中已经有数据了。

 

第四步、配置Sphinx

创建编辑sphinx.conf配置文件:

sudo vim /etc/sphinxsearch/sphinx.conf

Sphinx配置文件包含3个基本的配置块,它们是index,searchd,和source,各块在下面列出,把每块的内容拷贝到sphinx.conf中。

source块包含数据的类型,连接到MySQL的用户名和密码。下面sql_query查询语句的第一列应该为唯一主键ID,SQL查询在每次索引执行,然后把数据导出到Sphinx索引文件。下面列出了source块的每个字段的意思:

sql_host:MySQL的主机,可以是localhost,也可以是远程主机IP或域名。

sql_user:MySQL的用户名。

sql_pass:MySQL对应用户名的密码

sql_db:存储数据的数据库名称

sql_query:SQL查询语句

source src1

{

type          = mysql

sql_host      = localhost

sql_user      = root

sql_pass      = password    # 改为你的密码

sql_db        = test

sql_port      = 3306 # mysql端口默认是3306

sql_query     = \

SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \

FROM documents

sql_attr_uint     = group_id

sql_attr_timestamp    = date_added

sql_query_info        = SELECT * FROM documents WHERE id=$id

}

index包含要索引的数据源和存储数据的路径。

source:上面的source块 src1

path:保存索引的路径

charset_type:索引使用的字符集,例如utf-8

index test1

{

source            = src1

path          = /var/lib/sphinxsearch/data/test1

docinfo           = extern

charset_type      = sbcs

}

searchd包含Sphinx服务运行时使用的端口和其他设置。

listen:sphinx监听的端口,这里使用9312端口

query_log:查询日志

pid_file:sphinx进程的PID文件

max_matches:每次查询的最大匹配

searchd

{

listen            = 9312   # Port to listen on

log           = /var/log/sphinxsearch/searchd.log

query_log     = /var/log/sphinxsearch/query.log

read_timeout      = 5

max_children      = 30

pid_file      = /var/run/sphinxsearch/searchd.pid

max_matches       = 1000

seamless_rotate       = 1

preopen_indexes       = 1

unlink_old        = 1

binlog_path       = /var/lib/sphinxsearch/data

}

把上面三块配置代码拷贝到sphinx.conf中。

 

第五步、把数据添加到Sphinx索引

使用上面的配置文件添加索引:

sudo indexer --all

现在已经把test数据中数据添加到索引中了,如果在添加完成之后有新数据添加到test数据库中,还需要运行上面命令把索引更新到最新。可以设置cron任务自动更新索引:

crontab -e

选择一个编辑器,把下面一样拷贝到文件最后:

@hourly /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf --all

上面的cronjob每一小时执行一次indexer命令。

 

第六步、启动Sphinx

在默认情况下Sphinx后台进程是关闭的,编辑/etc/default/sphinxsearch打开:

sudo vim /etc/default/sphinxsearch

START=no改为yes:

START=yes

启动Sphinx服务:

sudo service sphinxsearch start

 

第七步、测试搜索

使用search命令:

search my test document

上面只是简单的命令行搜索,你可以在PHP,Perl,Python,Ruby和Java语言中使用SphinxAPI执行搜索。

使用Sphinx你可以很方便的为你的网站加入自定义搜索,关于Sphinx更多信息,看项目首页

Ubuntu安装配置Sphinx

精选文章
热门文章