centos sphinx mysql安装配置sphinxse及全文索引的简单实现
摘自网络
以下步骤以linux centos5.3系统下为基础
1.安装centos5.3,步骤省略(网上教程大把)。不过要提醒大家一句的就是安装系统自带软件时最好不要选mysql
要不然你会很麻烦的,不多说了,你懂的。
2.通过yum命令安装必须的环境软件。
yum install gcc gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
yum install -y python python-devel
3.下载相关软件
这里将使用以下版本
mysql:mysql-5.1.52.tar.gz
sphinx:sphinx-0.9.9.tar.gz
coreseek:coreseek-3.2.13.tar.gz
cd /usr/local/src 讲所需软件都下载到此目录下
wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.52.tar.gz -c
wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz -c
wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.13.tar.gz -c
都下载完后就解压缩
tar -zxv -f mysql-5.1.52.tar.gz
tar -zxv -f sphinx-0.9.9.tar.gz
tar -zxv -f coreseek-3.2.13.tar.gz
在解压后的mysql-5.1.52文件夹下创建sphinx目录 为编译安装sphinxSE做准备
mkdir /usr/local/src/mysql-5.1.52/storage/sphinx
将sphinx-0.9.9/mysqlse/* 下的所有文件拷贝到 mysql-5.1.52/storage/sphinx/ 下
cp /usr/local/src/sphinx-0.9.9/mysqlse/* /usr/local/src/mysql-5.1.52/storage/sphinx/
cd /usr/local/src/mysql-5.1.52/
sh BUILD/autorun.sh 这一步是安装编译前的检查工作
运行玩是没有任何显示和输出的。如有错误,网上另行找对策。我到这里是没有错的。现在开始与设置编译
./configure –prefix=/usr/local/mysql –with-charset=utf8 –with-extra-charset=all
–enable-thread-safe-client –enable-assembler –with-readline –with-big-tables
–with-named-curses-libs=/usr/lib/libncursesw.so.5 –with-plugins=sphinx
确认无错误报告后继续下一步,如有错误网上找对策。不要抱侥幸心理。。。你懂的。
make && make install
编译安装成功后对mysql进行些初始化工作,如下:
groupadd mysql #添加mysql用户组
useradd -g mysql mysql #创建mysql用户并把它放到mysql组下
chown -R root:mysql /usr/local/mysql #修改mysql文件属性
/usr/local/mysql/bin/mysql_install_db –user=mysql –datadir=/usr/local/mysql/var
chown -R mysql /usr/local/mysql/var #修改属性
cp /root/mysql-5.1.52/support-files/mysql.server /etc/init.d/
chmod 700 /etc/init.d/mysql.server #修改权限
cp /root/mysql-5.1.52/support-files/my-medium.cnf /etc/my.cnf
/etc/init.d/mysql.server start #启动
/etc/init.d/mysql.server stop #停止
/etc/init.d/mysql.server start #启动
登陆mysql 初始密码是为空的 所以提示输入密码时直接回车就好。
/usr/local/mysql/bin/mysql -u root -p -S /tmp/mysql.sock
show engines; #查看mysql引擎,就会看到 SPHINX引擎,如下:
mysql> show engines;
+————+———+———————————————————–+————–+——+————+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+————+———+———————————————————–+————–+——+————+
| CSV | YES | CSV storage engine | NO | NO | NO |
| SPHINX | YES | Sphinx storage engine 0.9.9 | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
+————+———+———————————————————–+————–+——+————+
5 rows in set (0.01 sec)
看到了SPHINX了么? YES 你成功了。咱们继续。。。如果没看到。。。网上找对策。。。
到这一步mysql以及sphinxSE支持就安装完毕了。接下来就是sphinx的安装和运行测试。
进入到sphinx的源码文件夹(即sphinx解压后的sphinx-0.9.9下),运行下列命令就可以安装sphinx了:
ldconfig /usr/local/mysql/lib/mysql
ldconfig /usr/local/mysql/include/mysql
./configure –prefix=/usr/local/sphinx –with-mysql=/usr/local/mysql
make && make install
其中–prefix是指向sphinx的安装路径,–with-mysql是指向mysql的安装路径。
如果上面都没有报错,那sphinx就成功安装了。
sphinx的配置文件为sphinx.conf,下面进行配置:
cd /usr/local/sphinx/etc
cp sphinx.conf.dist sphinx.conf
vim sphinx.conf
进入修改它的一些数据库的配置,主要是修改数据库地址,数据库用户、密码,
还有数据库名这些,这里我们用安装mysql自带的test库进行测试。
导入数据
/usr/local/mysql/bin/mysql -u mysql < /usr/local/sphinx/etc/example.sql
locate libmysqlclient #运行该命令找到关于libmysqlclient.so.16的文件
cp /usr/local/mysql/lib/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.16
#然后把该文件的一个连接复制到在环境变量的文件夹/usr/lib/下
/usr/local/sphinx/bin/indexer –all #创建索引
/usr/local/sphinx/bin/search test #检索‘test’
结果我就不说了,你懂的。到这里sphinx的安装和运行测试已完。没出错的同志咱们继续。。。
sphinx不支持中文分词,国内也有人写了好多个分词组件,本文就讲安装LibMMSeg,
它是Coreseek为 Sphinx 全文搜索引擎设计的中文分词软件包,
其在GPL协议下发行的中文分词法,采用Chih-Hao Tsai的MMSEG算法。
cd /usr/local/src/
cd coreseek-3.2.13/mmseg-3.2.13/ #进入到mmseg所在文件夹,然后编译
./configure –prefix=/usr/local/mmseg
编译过程中报了一个config.status: error: cannot find input file: src/Makefile.in这个的错误,
然后运行下列指令再次编译就能通过了:
aclocal
libtoolize –force
automake –add-missing
autoconf
autoheader
make clean
然后再进行编译和安装:
./configure –prefix=/usr/local/mmseg
make && make install
把mmseg的命令加到环境变量中,然后运行mmseg,就能看到安装成功的信息了:
ln -s /usr/local/mmseg/bin/mmseg /bin/mmseg
mmseg
安装成功信息如下:
Coreseek COS(tm) MM Segment 1.0
Copyright By Coreseek.com All Right Reserved.
Usage: mmseg <option> <file>
-u <unidict> Unigram Dictionary
-r Combine with -u, used a plain text build Unigram Dictionary, default Off
-b <Synonyms> Synonyms Dictionary
-t <thesaurus> Thesaurus Dictionary
-h print this help and exit
到此全文搜索引擎中文分词软件包LibMMSeg就安装完毕了。
Sphinx是一个在GPLv2下分发的全文检索引擎;Coreseek 是一个可供企业使用的、
基于Sphinx(可独立于Sphinx原始版本运行)的中文全文检索引擎,按照GPLv2协议发行,
商业使用(例如, 嵌入到其他程序中)需要联系我们以获得商业授权。
一般而言,Sphinx是一个独立的全文搜索引擎;而Coreseek是一个支持中文的全文搜索引擎,
意图为其他应用提供高速、低空间占用、高结果相关度的中文全文搜索能力。
Sphinx/Coreseek可以非常容易的与SQL数据库和脚本语言集成。
Coreseek是也就是LibMMSeg和sphinx的结合,在sphinx0.9.9之前,
要安装LibMMSeg的中文分词都要给sphinx打上中文补丁然后再安装,到这0.9.9,
他们就把sphinx和LibMMSeg结合在一起提供中文搜索服务,不在以补丁的形式提供。
进入coreseek的目录下进行安装:
cd /usr/local/src/coreseek-3.2.13/csft-3.2.13/
./configure –prefix=/usr/local/coreseek –with-mysql=/usr/local/mysql
–with-mmseg=/usr/local/mmseg –with-mmseg-includes=/usr/local/mmseg/include/mmseg/
–with-mmseg-libs=/usr/local/mmseg/lib/
make && make install
这里的安装跟上面sphinx一样的,就是加入了LibMMseg分词,安装完创建测试数据,
创建搜索配置文件csft.conf,过程跟安装测试sphinx一样,但是创建索引时报了一个这样的错误:
FATAL: index ‘test1′: ‘synonyms’: failed to open ‘/data/exceptions.txt’,
进入配置文件csft.conf,把/data/exceptions.txt注释掉即可,创建完索引,运行测试OK。
要进行中文分词搜索请在配置文件中加入
charset_dictpath = /usr/local/mmseg/etc/
修改charset_type= zh_cn.utf-8
注意:charset_dictpath = /usr/local/mmseg/etc/ 放 charset_type= zh_cn.utf-8之上。