搭建高可用搜索服务(1)–安装coreseek服务

1:首先安装coreseek

wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
tar -zxvf coreseek-4.1-beta.tar.gz
yum -y install gcc gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
cd coreseek-4.1-beta
cd mmseg-3.2.14
./bootstrap
./configure --prefix=/usr/local/mmseg3.2.14
make
make install
cd ..

cd csft-4.1
sh buildconf.sh
#如果sh buildconf.sh最后没有生成configure脚本,且提示automake: warnings are treated as errors,可以将configure.ac中的这行
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
修改为
AM_INIT_AUTOMAKE([-Wall foreign])

./configure --prefix=/usr/local/coreseek4.1 --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3.2.14/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3.2.14/lib/ --with-mysql
make
make install

常见错误文章见:https://www.mawenbao.com/note/sphinx-coreseek-summary.html

2:索引配置文件大致如下:

source test
{
    type                    = mysql
    sql_host                = 127.0.0.1
    sql_user                = test
    sql_pass                = 123456
    sql_db                  = test
    sql_port                = 3306
    sql_query_pre           = SET NAMES utf8
    sql_query_pre           = REPLACE INTO sphinx_counter SELECT 1, MAX(id) FROM news
    sql_query_range         = SELECT MIN(id),MAX(id) FROM news
    sql_range_step          = 10000
    sql_ranged_throttle     = 1000
    sql_query               = SELECT id,author_id,title,content FROM news where  id>=$start AND id<=$end
    sql_attr_uint           = author_id
    sql_query_info_pre      = SET NAMES utf8
    sql_query_info          = SELECT * FROM news  WHERE id=$id
}

source extend : test
{
    sql_query_pre = SET NAMES utf8
    sql_query_range =
    sql_range_step = 0
    sql_query = SELECT id,author_id,title,content FROM news WHERE id > ( SELECT max_doc_id FROM sphinx_counter WHERE counter_id=2 )
}



index test
{
    source              = test
    path                = /usr/local/coreseek4.1/data/test
    docinfo             = extern
    mlock               = 0
    morphology          = none
    min_word_len        = 1
    html_strip          = 0

    charset_dictpath = /usr/local/mmseg3.2.14/etc/
    charset_type        = zh_cn.utf-8
}

index extend : test
{
    source              = extend
    path                = /usr/local/coreseek4.1/data/extend
    docinfo             = extern
    mlock               = 0
    morphology          = none
    min_word_len        = 1
    html_strip          = 0

    charset_dictpath = /usr/local/mmseg3.2.14/etc/
    charset_type        = zh_cn.utf-8
}

indexer
{
    mem_limit            = 2000M
}

searchd
{
    listen                = 127.0.0.1:9312
    listen                = 127.0.0.1:9313:mysql41
    read_timeout          = 10
    max_children          = 0
    max_matches           = 5000
    seamless_rotate       = 0
    preopen_indexes       = 0
    unlink_old            = 1
    pid_file              = /usr/local/coreseek4.1/log/searchd_mysql.pid
    log                   = /usr/local/coreseek4.1/log/searchd_mysql.log
    query_log             = /usr/local/coreseek4.1/log/query_mysql.log   
}

3:建立索引和启动服务

/usr/local/coreseek4.1/bin/indexer --all -c /usr/local/coreseek4.1/test.conf
/usr/local/coreseek4.1/bin/searchd -c /usr/local/coreseek4.1/test.conf

4:设置任务来定时重建主索引和增量索引

#test.sh主索引shell(* */3 * * * /usr/local/coreseek4.1/test.sh)

#!/bin/bash
date=`date "+%Y-%m-%d %H:%M:%S"`
echo -e "$date--start\n"
/usr/local/coreseek4.1/bin/indexer test --rotate -c /usr/local/coreseek4.1/test.conf
date=`date "+%Y-%m-%d %H:%M:%S"`
echo -e "$date--end\n"

#extend.sh增量索引shell(*/10 * * * * /usr/local/coreseek4.1/extend.sh)

#!/bin/bash
date=`date "+%Y-%m-%d %H:%M:%S"`
echo -e "$date--start\n"
/usr/local/coreseek4.1/bin/indexer extend  --rotate -c /usr/local/coreseek4.1/test.conf
date=`date "+%Y-%m-%d %H:%M:%S"`
echo -e "$date--end\n"

这样我们就完成了一个基本的搜索服务,同时为了避免程序意外退出,你也可以写个检查任务来自动启动coreseek服务.

此条目发表在 好文推荐, 网站架构 分类目录,贴了 , 标签。将固定链接加入收藏夹。

评论功能已关闭。