Sphinx:高性能SQL全文检索引擎

开源 系统
Sphinx是一款基于SQL的高性能全文检索引擎,利用Sphinx,我们可以完成比数据库本身更专业的搜索功能,而且可以有很多针对性的性能优化。Sphinx作为一款高性能的SQL全文检索引擎,值得开发者继续关注,尤其是它多语言的API支持,使开发者可以更方便地应用。

Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据库本身更专业的搜索功能,而且可以有很多针对性的性能优化。

Sphinx的特点

  • 快速创建索引:3分钟左右即可创建近100万条记录的索引,并且采用了增量索引的方式,重建索引非常迅速。
  • 闪电般的检索速度:尽管是1千万条的大数据量,查询数据的速度也在毫秒级以上,2-4G的文本量中平均查询速度不到0.1秒。
  • 为很多脚本语言设计了检索API,如PHP,Python,Perl,Ruby等,因此你可以在大部分编程应用中很方便地调用Sphinx的相关接口。
  • 为MySQL设计了一个存储引擎插件,因此如果你在MySQL上使用Sphinx,那简直就方便到家了。
  • 支持分布式搜索,可以横向扩展系统性能。

PHP+MySQL+Sphinx 搜索引擎架构图

在MySQL中安装Sphinx

Sphinx在MySQL上安装有两种方式:

  • ***种方式是采用API调用,我们可以使用PHP,Python,Perl,Ruby等编程语言的API函数进行查询,这种方式不必重新编译MySQL,模块间改动比较少,相对灵活。
  • 第二种需要重新编译MySQL,将Sphinx以插件的方式编译到MySQL中去,这种方式对程序改动比较少,仅仅需要改动SQL语句即可,但前提是你的MySQL版本必须在5.1以上。

下面是***种安装方式:

  1. #下载***稳定版 
  2. wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz 
  3. tar xzvf sphinx-0.9.9.tar.gz 
  4. cd sphinx-0.9.9 
  5. ./configure --prefix=/usr/local/sphinx/   --with-mysql  --enable-id64 
  6. make 
  7. make install 

Sphinx中文分词插件Coreseek安装

注:coreseek的安装教程来自这里,下面是详细过程:

安装升级autoconf

因为coreseek需要autoconf 2.64以上版本,因此需要升级autoconf,不然会报错。从http://download.chinaunix.net/download.php?id=29328&ResourceID=648下载autoconf-2.64.tar.bz2,安装方法如下:

  1. tar -jxvf autoconf-2.64.tar.bz2 
  2. cd autoconf-2.64 
  3. ./configure 
  4. make 
  5. make install 

下载coreseek

新版本的coreseek将词典和sphinx源程序放在了一个包中,因此只需要下载coreseek包就可以了。

  1. wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz 

安装mmseg(coreseek所使用的词典)

  1. tar xzvf coreseek-3.2.14.tar.gz 
  2. cd mmseg-3.2.14 
  3. ./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决 
  4. ./configure --prefix=/usr/local/mmseg3 
  5. make && make install 
  6. cd .. 

安装coreseek(sphinx)

  1. cd csft-3.2.14 
  2. sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决 
  3. ./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql 
  4. make && make install 
  5. cd .. 

测试mmseg分词和coreseek搜索

备注:需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文,我的系统字符集为en_US.UTF-8也是可以的。

  1. cd testpack 
  2. cat var/test/test.xml  #此时应该正确显示中文 
  3. /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml 
  4. /usr/local/coreseek/bin/indexer -c etc/csft.conf --all 
  5. /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索 
  6. 此时正确的应该返回 
  7. words: 
  8. 1. '网络': 1 documents, 1 hits 
  9. 2. '搜索': 2 documents, 5 hits 

生成 mmseg词库及配置文件

新版本的已经自动生成。

总结

Sphinx作为一款高性能的SQL全文检索引擎,值得开发者继续关注,尤其是它多语言的API支持,使开发者可以更方便地应用。

责任编辑:火凤凰 来源: 码农网
相关推荐

2010-11-10 14:18:15

SQL SERVER全

2010-10-20 10:55:54

SQL Server全

2009-07-06 18:18:41

SQL Server全

2011-03-04 10:47:06

Nagios监控Sphinx

2009-08-14 11:24:10

MySQL全文检索MySQL Like索

2011-04-02 13:37:05

SQL Server 索引视图

2010-07-21 09:58:21

SQL Server全

2010-03-12 08:33:55

Greenplum数据引擎数据仓库

2010-07-09 10:36:22

SQL Server

2010-07-16 15:42:32

SQL Server

2023-09-27 09:11:13

操作系统HTTP

2018-12-28 09:48:11

SolrElasticSear搜索

2017-08-17 16:42:38

Elastic 全文搜索服务器

2010-11-10 14:26:44

Sql Server全

2011-08-30 13:54:29

SQL Server全文索引

2011-04-18 11:00:12

SQL Server全文索引

2010-09-27 11:42:44

SQL全文索引

2010-11-10 14:06:44

SQL Server全
点赞
收藏

51CTO技术栈公众号