coreseek全文检索的安装配置

分类: PHP,SQL/NoSQL,服务器,分享  • 发布时间: 2015-04-23 11:50:00  • 浏览量:19886

系统环境:centos

coreseek其实就是sphinx+中文分词,今天这里记录一下自己的过程,包括sphinx的安装、mmseg中文分词软件的安装、php的sphinx扩展的安装,mysql、php、apache或者nginx的安装这里没有记录。

第一步:安装一些基础库和工具,免得后面出现缺少库的情况出现。

yum -y install make gcc gcc++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel

第二步:下载coreseek,并解压,依次执行以下命名

cd /usr/local/src
wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
tar zxvf coreseek-4.1-beta.tar.gz

第三步:安装mmseg分词软件,依次执行以下命名

cd coreseek-4.1-beta/mmseg-3.2.14/
./bootstrap
./configure --prefix=/usr/local/mmseg3
make && make install

可以用下面的命令测试分词软件是否安装成功

cd /usr/local/mmseg3/bin
./mmseg -d /usr/local/mmseg3/etc/ /usr/local/src/coreseek-4.1-beta/mmseg-3.2.14/src/t1.txt

第四步:安装sphinx,依次执行以下命名

cd /usr/local/src/coreseek-4.1-beta/csft-4.1/
sh 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
make && make install

第五步:在mysql中准备测试表(blog库),并准备点数据

DROP TABLE IF EXISTS `news`;
CREATE TABLE `news` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `catid` int(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
insert into news(title,content,catid) values('我是谁啊,祖国','我是你河边上破旧的老水车,数百年来纺着疲惫的歌我是你额上熏黑的矿灯照 你在历史的隧洞里蜗行摸索我是干瘪的稻穗;是失修的路基',1);
insert into news(title,content,catid) values('我城管来收税的','大风大浪我都见过,还会怕你们这些小虾米,都给我跪着,每人交5000元罚款,听见没有?',1);

第六步:让sphinx正常连接mysql,依次执行以下命名(配置)

cd /usr/local/coreseek/etc/
cp sphinx.conf.dist csft.conf
vi csft.conf

修改以下信息,改成自己的

sql_host                = localhost
sql_user                = root
sql_pass                =
sql_db                  = blog
sql_port                = 3306

开启查询之前的执行语句和关闭查询缓存,找到好把前面的#去掉

sql_query_pre         = SET NAMES utf8
sql_query_pre         = SET SESSION query_cache_type=OFF

找到

sql_query_info          = SELECT * FROM docments WHERE id=$id

改为

sql_query_info          = SELECT * FROM news WHERE id=$id

从表中读取记录的语句修改成这样的

sql_query  = SELECT id,title,content FROM news

找到

charset_type            = sbcs

改为 

charset_type                        = zh_cn.utf-8

添加词典的目录

charset_dictpath                    = /usr/local/mmseg3/etc/

将配置保存,接下来测试sphinx是否安装成功

####

测试创建索引

/usr/local/coreseek/bin/indexer --all

####

测试检索功能

/usr/local/coreseek/bin/search 祖国

第七步:安装php的sphinx扩展

php扩展官网:http://pecl.php.net/package/sphinx

安装sphinx扩展前需要先安装libsphinxclient,以此执行下面命令

cd /usr/local/src/coreseek-4.1-beta/testpack/api/libsphinxclient/
./configure
make && make install

安装php-sphinx扩展

cd /usr/local/src/
wget http://pecl.php.net/get/sphinx-1.3.2.tgz
tar zxvf sphinx-1.3.2.tgz
cd sphinx-1.3.2
phpize
./configure --with-php-config=/usr/bin/php-config --with-sphinx
make && make install

将php-sphinx扩展加到php.ini

vi /etc/php.ini

在里面添加上如下内容,保存退出,重启web服务器即可

extension = sphinx.so


第八步:启动sphinx服务,在php中使用搜索

/usr/local/coreseek/bin/searchd

附PHP搜索测试代码

<?php
$word = $_GET['word'];
$sphinx = new SphinxClient();
$sphinx->setServer("localhost", 9312);
$sphinx->setMatchMode(SPH_MATCH_ANY);
$result = $sphinx->query ($word,'*');
print_r($result);


至于增量索引和实时索引的制作部分可以看后来写的:

coreseek或者sphinx的实时索引制作

文章标签: php, 中文分词, coreseek, sphinx, 全文检索