搜索引擎

来源:互联网 发布:部落冲突资源升级数据 编辑:程序博客网 时间:2024/04/29 14:14

二,linux下安装Sphinx全文索引,以CentOS 5.3为例

只能说windows下安装sphinx只是为了体验,因为linux下安装sphinx才是正道。
为了详细体验Centos下安装Sphinx,重新安装Centos系统,完整体验Sphinx安装过程。
Coreseek 全文检索服务器版本已经集成sphinx和中文分词补丁,只需要下载MMSeg和Coreseek Fulltext Server(源代码),就能实现Sphinx服务支持。
下载地址:http://www.coreseek.cn/products/ft_down/

推荐源代码安装

1,开始前的准备工作 [如果已经安装就不需要,如果下面列表没有还有其它的请补上]
1)安装mysql
2)安装php
3)安装apache
4)安装python
5)安装libiconv
6)安装gcc-c++
7)下载Coreseek Fulltext Server(源代码):http://www.coreseek.cn/uploads/csft/3.1/Source/csft-3.1.tar.gz
8)下载Coreseek Mmseg(源代码):http://www.coreseek.cn/uploads/csft/3.1/Source/mmseg-3.1.tar.gz

执行如下命令
yum install python python-dev

2,安装步骤
(1)下载CSFT与MMseg
#wget http://www.coreseek.cn/uploads/csft/3.1/Source/mmseg-3.1.tar.gz
#wget http://www.coreseek.cn/uploads/csft/3.1/Source/csft-3.1.tar.gz

(2)安装MMseg中文分词
# pwd
/usr/local [知道当前的安装目录]
# wget http://www.coreseek.cn/uploads/csft/3.1/Source/mmseg-3.1.tar.gz
# tar xzvf mmseg-3.1.tar.gz
# mkdir /usr/local/mmseg
# cd mmseg-3.1
# ./configure --prefix=/usr/local/mmseg
# make
# make install

运行如下,看看mmseg是否安装成功
# /usr/local/mmseg/bin/mmseg
Coreseek COS(tm) MM Segment 1.0
Copyright By Coreseek.com All Right Reserved.
Usage: /usr/local/mmseg/bin/mmseg <option> <file>
-u <unidict>           Unigram Dictionary
-r           Combine with -u, used a plain text build Unigram Dictionary, default Off
-b <Synonyms>           Synonyms Dictionary
-h            print this help and exit


(3)安装csft-3.1
# pwd
/usr/local
# wget http://www.coreseek.cn/uploads/csft/3.1/Source/csft-3.1.tar.gz
# tar xzvf csft-3.1.tar.gz
# mkdir /usr/local/csft
# cd csft-3.1
# ./configure --prefix=/usr/local/csft --with-mmseg=/usr/local/mmseg/bin/mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/
# make
# make install

这里make的时候可能出错,解决如下:
1,检查环境是否安装如下软件
# yum install mysql mysql-devel php-mysql qt4-mysql   [mysql环境要首先安装]
# yum install python python-dev

2,是否安装libiconv
下载地址:http://savannah.gnu.org/projects/libiconv/

3,如果还有错误,打开src/Makefile文件,进行修改
# vi src/Makefile 找到182行



LIBS = -lm -lz -lexpat  -L/usr/local/lib -lpthread
LIBS = -lm -lz -lexpat -liconv -L/usr/local/lib -lpthread

这样,如果一切顺利,就开始配置你的sphinx全文索引服务器吧[如果安装有什么问题,欢迎在PHPWind官方提问]!

3,按下来就是配置
#cp /usr/local/csft/etc/sphinx-min.conf.dist /usr/local/csft/etc/sphinx.conf
修改sphinx.conf文件中的数据库参数配置,方法同windows下一样
sql_host                = localhost
sql_user                = root
sql_pass               =
sql_db                  = test

4,把体验数据/usr/local/csft/etc/example.sql 导入到数据库 [这一步应该都会]
5,新建索引
# /usr/local/csft/bin/indexer --all

6,测试搜索
# /usr/local/csft/bin/search test
如果测试有返回,恭喜你的sphinx全文索引服务器配置成功

7,接下来就是支持中文的配置和实现

UTF8编码实例 [如果已经存在utf8的数据库就不需要新建,这里只是举例]
1)创建一个新的数据库,注意编码为utf8_general_ci,如phpwind
2)导入部分现有的GBK数据,如pw_threads
3)配置csft.conf如下
source数据源部分
sql_host                = localhost
sql_user                  = root
sql_pass                 =
sql_db                     = phpwind
sql_query_pre         = SET NAMES utf8
sql_query_pre         = SET SESSION query_cache_type=OFF
sql_query                = SELECT tid,fid,authorid,subject FROM pw_threads
sql_attr_uint            = fid
sql_attr_uint            = authorid

索引部分
charset_type            = zh_cn.utf-8
charset_dictpath       = /usr/local/csft/
min_prefix_len           = 0
min_infix_len             = 0
min_word_len            = 2

4)创建数据词典
#pwd
/usr/local/mmseg-3.1/data   [这是你解压mmseg的目录下的data]
运行如下命令
# mmseg -u unigram.txt
# ll
总计 10152
-rwxr-xr-x 1 root root     715 06-06 18:40 build_unigram.py
-rwxr-xr-x 1 root root   32674 06-06 18:40 char.stat.txt
-rwxr-xr-x 1 root root 1051268 06-06 18:40 Lexicon_full_words.txt
-rwxr-xr-x 1 root root 1826251 06-06 18:40 unigram.txt
-rw-r--r-- 1 root root 3729280 09-16 20:20 unigram.txt.uni

将会生成 unigram.txt.uni  文件
# mv unigram.txt.uni  uni.lib
# cp uni.lib /usr/local/csft/  [这就是上面我们在配置索引中用的charset_dictpath]

其它的默认不变,如上方法创建索引
# /usr/local/csft/bin/indexer --all

测试是否成功
# /usr/local/csft/bin/search 测试

以上就是utf8编码的全文索引实现过程