PHP+Sphinx中文分词搜索引擎coreseek的安装及测试

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/

你可能感兴趣的:(sphinx,coreseek)