Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景。。 详细介绍查看其官网: http://www.coreseek.cn/
第一步:先安装mmseg
wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz #下载CoreSeek
tar -zxvf coreseek-4.1-beta.tar.gz
cd coreseek-4.1-beta
cd mmseg-3.2.14
./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/usr/local/mmseg3
make && make install
第二步:安装coreseek
cd csft-4.0.1
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 ..
第三步:测试 测试mmseg分词,coreseek搜索(需要预先设置好字符集为zh_CN.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 网络搜索
第四步:索引配置 创建配置sphinx与mysql的配置文件
vi /usr/local/coreseek/etc/sphinx.conf
以下是我用现公司的其中一张表做数据源测试略做了修改,可以根据表的不同做修改。
source main_src
{
type = mysql #类型
sql_host = localhost #mysql主机
sql_user = root #mysql用户名
sql_pass = 123456 #mysql密码
sql_db = test #使用的mysql数据库名
sql_port = 3306 #端口
sql_sock = /usr/local/mysql/mysql.sock #在mysql安装目录下
sql_query_pre = SET NAMES utf8 #设置字符集
sql_query_pre = SET SESSION query_cache_type=OFF #禁用查询缓冲
sql_ranged_throttle = 0 #分区查询间隔时间
}
#index定义
index main_index
{
source = main_src
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 1
path =
charset_dictpath = /usr/local/mmseg-3.2.14/etc
charset_type = zh_cn.utf-8
}
source partner_src : main_src{
sql_query=SELECT comp_id,comp_status,comp_order,views,RADIANS( longitude ) AS longitude, RADIANS( latitude ) AS latitude,comp_name,comp_keyword FROM anl_partner #comp_id主键不需要添加属性,comp_name,comp_keyword为文本做搜索内容, 该语句为生成索引的查询语句
sql_attr_uint = comp_status #属性 整数可以做筛选
sql_attr_uint = comp_order
sql_attr_uint = views
sql_attr_float = longitude #属性 浮点型,可以做地理位置检索
sql_attr_float = latitude
}
index partner_index : main_index {
path = /usr/local/coreseek/var/data
source = partner_src
}
#全局index定义
indexer
{
mem_limit = 256M
}
#searchd服务定义
searchd
{
listen = 9312
read_timeout = 5
max_children = 30
max_matches = 1000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = /usr/local/coreseek/var/log/searchd_mysql.pid
log = /usr/local/coreseek/var/log/searchd_mysql.log
query_log = /usr/local/coreseek/var/log/query_mysql.log
}
保存索引配置文件,生成索引,启动服务。
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all --rotate #生成索引
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf #启动服务
更详细的索引配置查看: http://www.coreseek.cn/docs/coreseek_4.1-sphinx_2.0.1-beta.html#api-reference
注:在安装mmseg,coreseek过程中遇到:error: cannot find input file: src/Makefile.in或者遇到其他类似error错误时... 依次执行以下命令,然后在重新./configure安装,没有错误,自动忽略。。。
yum -y install libtool
aclocal
libtoolize --force
automake --add-missing
autoconf
autoheader
make clean
第五步:PHP+coreseek测试 首先:安装sphinx的PHP扩展
wget http://pecl.php.net/get/sphinx-1.3.0.tgz
tar -zxvf sphinx-1.3.0.tgz
cd sphinx-1.3.0
/usr/local/php-5.4.30/bin/phpize
./configure --with-php-config=/usr/bin/php-config --with-sphinx=/usr/local/sphinxclient
make && make install
cp modules/sphinx.so /usr/local/php-5.4.30/ext/
vi /usr/local/php-5.4.30/etc/php.ini
extension=/usr/local/php-5.4.30/ext/sphinx.so #在php.ini文件最后增加这一行
然后:测试PHP调用sphinx
$s = new SphinxClient;
$s->setServer("127.0.0.1", 9312);
$s->setMatchMode(SPH_MATCH_PHRASE);
$s->setMaxQueryTime(30);
$res = $s->query("测试",'partner_index'); //[测试]关键字,[partner_index]数据源source
$err = $s->GetLastError();
var_dump($res);
注:可以不安装php扩展sphinx,直接引入一个类(sphinxapi.php)使用方法跟扩展一样,具体查看: http://php.net/manual/zh/book.sphinx.php。 该类在coreseek-4.1-beta/testpack/api目录下。 更详细的安装请查看: http://www.coreseek.cn/product_install/install_on_bsd_linux/