日期:2014-05-16  浏览次数:20994 次

Sphinx+MySQL5.1x+SphinxSE+mmseg中文分词

搜索引擎架构搭建

 什么是Sphinx

Sphinx 是一个在GPLv2 下发布的一个全文检索引擎,一般而言,Sphinx是一个独立的搜索引擎,意图为其他应用提供高速、低空间占用、高结果相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS的原生支持)。

Sphinx的特性 

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

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

 可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可处理100 M 文档);

 提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法; 支持分布式搜索;

 provides document exceprts generation;

 可作为MySQL的存储引擎提供搜索服务;

 支持布尔、短语、词语相似度等多种检索模式;

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

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

 停止词查询;

 支持单一字节编码和UTF-8编码;

 原生的MySQL支持(同时支持MyISAM 和InnoDB );

       原生的PostgreSQL 支持.

更多特性参考手册。

原生MySQL存储引擎检索流程:

基于Sphinx存储引擎检索:

开始

本文以CentOS5.5+mysql-5.1.55+sphinx-0.9.9(coreseek-3.2.14.tar.gz目前最新稳定版)为例介绍

安装前准备文件

Sphinx+MySQL5.1x+SphinxSE存储引擎+mmseg中文分词搜索引擎架构搭建过程。

通过yum命令更新依赖包(php环境搭建依赖包一起更新了)

yum -y install gcc g++ gcc-c++ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers patch libtool automake imake mysql-devel expat-devel

安装MySQL+SphinxSE,进入软件包目录

tar zxvf mysql-5.1.55.tar.gz

tar zxvf sphinx-0.9.9.tar.gz

cp -r sphinx-0.9.9/mysqlse/ mysql-5.1.55/storage/sphinx

cd mysql-5.1.55

./BUILD/autorun.sh

./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innobase,myisammrg,sphinx

make

make install

/*************************

如果在编译中出现类似下面错误:

collect2: ld returned 1 exit status

make[2]: *** [indexer] Error 1

make[2]: Leaving directory `/home/jling/sphinx-0.9.9/src'

make[1]: *** [all] Error 2

make[1]: Leaving directory `/home/jling/sphinx-0.9.9/src'

make: *** [all-recursive] Error 1

打开 coreseek-3.2.14/csft-3.2.14/config/config.h

将#define USE_LIBICONV 1

修改为#define USE_LIBICONV 0

然后重新执行make

*************************/

。。。省略若干配置步骤,和平时配置MySQL没什么两样。

安装完成启动MySQL后查看sphinx存储引擎是否安装成功

在mysql命令行下执行

<