在遥远的埃及沙漠,有一座雄伟的狮身人面像耸立在那里,它就位于古埃及第四王朝法老哈夫拉的古墓旁边,它就是各位读者所熟知的斯芬克斯。关于斯芬克斯的来历众所纷纭,在希腊神话中,史芬克斯是以谜题害人的生物,它长得人头狮身,经常拦在过往路人的去路之上,让路人答题,若路人无法回答题目,史芬克斯便会把可怜的过路人吃掉,它代表神的惩罚。在本系列中,我们将介绍一款与这个狮身人面怪兽同名全文索引引擎,Sphinx全文索引。
进入本篇的主题,本篇中,我们将讲述:
(1)、Sphinx/Coreseek的简介
(2)、安装Sphinx/Coreseek
一、Sphinx/Coreseek的简介
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL等数据库做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。[1]。其官网为:http://sphinxsearch.com/。
CoreSeek则是支持中文分词技术的基于Sphinx研发并独立发布,采用GPLv2协议开放源码,其官网为:http://www.coreseek.cn/。截至本文编写为止,其稳定版为:Coreseek 3.2.14。
目前Coreseek的主要特性包括[2]:
(1)、支持多种数据来源
·Mysql数据库
·支持多种MySQL文本数据的中文编码格式,目前支持的有UTF-8、GB18030;
·PostgreSQL数据库
·xmlpipe2 数据管道
·允许用户通过xmlpip2向全文搜索服务器导入自定义格式的数据。
·Python 可编程数据源
(2)、高性能
·高速索引
·在现代CPU上可达10 MB/秒(英文),在启用了中文分词后,建立索引的速度可达300K/s;
·高速搜索
·在2-4 GB的文本建立的索引上搜索,平均0.1秒内获得结果;
·可处理大数据量
·在单一CPU上,实测最高可对100GB的文本建立索引,单一索引可包括100M文件
·支持分布式搜索
·支持主从式的分布式搜索,支持单一节点失效不影响整个搜索系统
(3)、支持复杂的查询
·支持基于短语和基于统计的复合结果排序机制
·支持任意数量的文件字段(数值或全文文本)
·支持不同的搜索模式(“完全匹配”,“短语匹配”和“任一匹配”)
(4)、为中文优化
·基于最大匹配算法的中文分词模块
·支持GB18030、UTF-8等多种编码的数据源
·针对中文的具体特点,对结果的排序进行了优化
·支持作为MySQL的存储引擎
二、安装Sphinx/Coreseek
要安装Sphinx/Coreseek,就必须先获得相应的源码包。
Sphinx的下载页面地址为:http://sphinxsearch.com/downloads/release/
Coreseek 3.2.14 的下载地址为:http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
由于它们都是基于Sphinx引擎进行开发,因此它们的安装方式大体上是相同的,为了后续文章的开展这里我选择了支持中文分词的Coreseek进行讲解。
总得来说,安装Coreseek分为三个步骤,安装依赖包,安装mmseg中文分词组件,安装csft组件。下面我们正式开始安装:
首先我们要先把分词软件依赖包用yum全部安装上:
yum install -y make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
然后解压出Coreseek源码包:
tar zxf coreseek-3.2.14.tar.gz
安装mmseg中文分词组件:
cd mmseg-3.2.14/ ./bootstrap ./configure --prefix=/usr/local/mmseg3 make make install
安装csft组件:
cd csft-3.2.14/ /bin/bash buildconf.sh ./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
##注意,这里mysql是让Coreseek支持Mysql,如果支持其他的可以改其他参数,譬如:--with-pgsql make && make install
就这样,我们愉快的把Coreseek安装完成了。
好的,本篇内容就先到这里,下一篇中,我们将花一篇的时间来讲解Sphinx的配置,我们下回见。
[1]:引用自开源中国(http://www.oschina.net/p/sphinx/)
[2]:引用自Coreseek官网(http://www.coreseek.cn/products/ft_feature/)