Ubuntu安装配置Sphinx

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

Sphinx的主要特性:

  • 检索速度快
  • 高级索引和查询工具
  • 高级结果集后处理(post-processing)
  • 支持数据量大,每秒钟可以执行几千次查询
  • 非常容易集成SQL和XML数据源,和SphinxQL、SphinxAPI、SphinxSE检索接口
  • 容易扩展为分布式搜索

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

第一步:安装MySQL

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

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

第二步:安装Sphinx

执行如下命令:

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

第三步:创建测试数据库

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

登录到MySQL命令行:

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

创建一个叫test的数据库:

导入测试SQL文件:

退出MySQL命令行:

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

第四步:配置Sphinx

创建编辑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查询语句

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

  • source:上面的source块 src1
  • path:保存索引的路径
  • charset_type:索引使用的字符集,例如utf-8

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

  • listen:sphinx监听的端口,这里使用9312端口
  • query_log:查询日志
  • pid_file:sphinx进程的PID文件
  • max_matches:每次查询的最大匹配

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

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

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

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

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

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

第六步:启动Sphinx

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

START=no改为yes:

启动Sphinx服务:

第七步:测试搜索

使用search命令:

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

如果你使用PHP,这里有几个例子。

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

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注