Sphinx学习之sphinx的安装篇

1、  Sphinx简介

Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其余应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx能够很是容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。php

Sphinx的特性以下:java

a)  高速的创建索引(在当代CPU上,峰值性能可达到10 MB/秒);mysql

b)  高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);linux

c)  可处理海量数据(目前已知能够处理超过100 GB的文本数据, 在单一CPU的系统上可 处理100 M 文档);程序员

d)  提供了优秀的相关度算法,基于短语类似度和统计(BM25)的复合Ranking方法;算法

e)  支持分布式搜索;sql

f)  支持短语搜索数据库

g)  提供文档摘要生成bootstrap

h)  可做为MySQL的存储引擎提供搜索服务;api

i)  支持布尔、短语、词语类似度等多种检索模式;

j)  文档支持多个全文检索字段(最大不超过32个);

k)  文档支持多个额外的属性信息(例如:分组信息,时间戳等);

l)  支持断词;

虽然mysql的MYISAM提供全文索引,可是性能却不敢让人恭维,另外数据库毕竟不是很善于作这样的事情,咱们须要把这些活让给更适合的程序去作,减小数据库的压力。所以采用Sphinx来作mysql的全文索引工具是一个很好的选择。这个星期主要来学习这个这个工具的使用,下面将学习过程大体的记录一下,作个备忘,也但愿能对学习这个工具的其余朋友有所启发。

2、  Sphinx安装

Sphinx在mysql上的应用有两种方式:

  1. 采用API调用,如使用PHP、java等的API函数或方法查询。优势是可没必要对mysql从新编译,服务端进程“低耦合”,且程序可灵活、方便的调用;缺点是如已有搜索程序的条件下,需修改部分程序。推荐程序员使用。
  2. 使用插件方式(sphinxSE)把sphinx编译成一个mysql插件并使用特定的sql语句进行检索。其特色是,在sql端方便组合,且能直接返回数据给客户端。没必要二次查询,在程序上仅须要修改对应的sql,但这对使用框架开发的程序很不方便,好比使用了ORM。另外还须要对mysql进行从新编译,且须要mysql-5.1以上版本支持插件存储。

这里的安装主要介绍的是第一种经过api调用的方式。Sphinx的安装以下:

#下载最新稳定版

wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz

tar xzvf sphinx-0.9.9.tar.gz

cd sphinx-0.9.9

./configure --prefix=/usr/local/sphinx/   --with-mysql  --enable-id64

make

make install

注意:采用这种方式安装不支持中文分词。

3、  Sphinx中文分词

中文的全文检索和英文等latin系列不同,后者是根据空格等特殊字符来断词,而中文是根据语义来分词。中文分词主要有2个插件

  1. Coreseek

Coreseek是如今用的最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg ,是基于sphinx的基础上开发的。

  1. sfc(Sphinx-for-chinese)

sfcsphinx-for-chinese是由网友happy兄提供的另一个中文分词插件。其中文词典采用的是xdict

本文主要介绍Coreseek的安装方法

4、  Coreseek(支持中文检索的sphinx)安装

  1. 安装升级autoconf

由于coreseek须要autoconf 2.64以上版本,所以须要升级autoconf,否则会报错从http://download.chinaunix.net/download.php?id=29328&ResourceID=648下载autoconf-2.64.tar.bz2,安装方法以下:

tar -jxvf autoconf-2.64.tar.bz2

cd autoconf-2.64

./configure

make

make install

  1. 下载coreseek

新版本的coreseek将词典和sphinx源程序放在了一个包中,所以只须要下载coreseek包就能够了。

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

tar xzvf coreseek-3.2.14.tar.gz

cd mmseg-3.2.14

./bootstrap    #输出的warning信息能够忽略,若是出现error则须要解决

./configure --prefix=/usr/local/mmseg3

make && make install

cd ..

  1. 安装coreseek(sphinx)

cd csft-3.2.14

sh buildconf.sh    #输出的warning信息能够忽略,若是出现error则须要解决

./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

make && make install

cd ..

  1. 测试mmseg分词和coreseek搜索

备注:须要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文,个人系统字符集为en_US.UTF-8也是能够的。

cd testpack

cat var/test/test.xml  #此时应该正确显示中文

/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml

/usr/local/coreseek/bin/indexer -c etc/csft.conf --all

/usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索

此时正确的应该返回

words:

1. '网络': 1 documents, 1 hits

2. '搜索': 2 documents, 5 hits

  1. 生成 mmseg词库及配置文件

新版本的已经自动生成。

5、  参考文章:

Sphinx中文指南

http://www.sphinxsearch.org/sphinx-tutorial

Sphinx中文分词应用

http://www.sphinxsearch.org/archives/82

Sphinx 0.9.8参考手册

CoreSeek BSD/Linux下的安装

http://www.coreseek.cn/products/products-install/install_on_bsd_linux/

相关文章
相关标签/搜索