sphinx应用项目实践踩坑记

本文记录了Sphinx在项目实战中遇到的环境搭建、配置解析等问题,包括容器启动、配置文件设置、中文搜索配置、过滤字段与索引等难点,以及在上线部署时的cron定时任务调整,旨在分享经验,避免重复踩坑。

之前写的关于sphinx环境及使用的文章只是简单的做个小demo的测试,真正应用到项目中会遇到各种问题袭来,没有leader指导,只能自己摸索,应用到项目上线也是花了好几天的时间,这次记录只要是指出各个坑点,避免日后再踩坑。

环境搭建

docker 如何安装在这里就不详细说了,有了docker环境后使用 docker search sunfjun/coreseek ,笔者使用的docker源是阿里源 vi /etc/docker/daemon.json

{
  "registry-mirrors": ["https://78zjyej0.mirror.aliyuncs.com"]
}

这个镜像也是笔者找了很久才找到的,本来想下载软件环境重新安装走一遍的,可是www.coreseek.cn网站已经停止运营了,无法下载到coreseek,很多csdn下载coreseek都要积分,于是就找到了这个现成的容器,不过这个支持中文搜索的coreseek容器似乎环境版本有点低,只能下载sphinx-2.0.10-release.tar.gz,亲试过以上版本的会提示版本问题,下载地址{:target=_blank},sunfjun/coreseek作者项目说明地址
拉取镜像 docker pull sunfjun/coreseek

启动容器

启动容器必须要有一个 sphinx.conf,笔者刚开始在这里折腾了好久,该文件要映射到 /usr/local/etc/sphinx 目录,要不然会报 csrf.conf 找不到的错误,还有一点需要注意的是 sphinx.conf 必须是可使用的配置,因为启动容器会运行脚本 entrypoint.sh ,

#!/bin/bash

/usr/local/bin/indexer --all > /var/sphinx/log/indexer.log

echo "Starting Sphinx"
/usr/local/bin/searchd --nodetach

新建目录 mkdir -p /data/sphinx/conf /data/sphinx/data /data/sphinx/log ,刚开始不了解配置,最简单的方法是 copy sphinx 包里的 sphinx-min.conf.in 文件到 conf 目录 cp sphinx-min.conf.in /data/sphinx/conf/sphinx.conf ,将包里的 example.sql 导入到已有数据库,把配置里的数据库连接改为自己的数据库连接即可,把配置文件里的 data 目录和 log 目录改为 /var/sphinx/data /var/sphinx/log。
docker run -id --name sphinx -v /data/sphinx/conf:/usr/local/etc/sphinx -v /data/sphinx/data:/var/sphinx/data -v /data/sphinx/log:/var/sphinx/log -p 9312:9312 sunfjun/coreseek,配置如果没有什么大问题应该可以正常启动,可以使用 docker ps -a 查看容器有没有启动,使用 docker logs sphinx 查看失败原因

配置解析

#
# Minimal Sphinx configuration sample (clean, simple, functional)
#

source src
{
    type            = mysql
    sql_host        = xxx
    sql_user        = xxx
    sql_pass        = xxx
    sql_db          = xxx
    sql_port        = 3306
    #sql_query_pre      = SET NAMES utf8

}

source release_src:src
{
    sql_query_pre       = replace into release_counter select 1, max(id) from sre_sql_release;
    sql_query_pre       = SET NAMES utf8
    sql_query       = select id,applicant,operation,reason,dbname,scrum_key,bug_key,content,is_deleted,status,CRC32(env) as env,UNIX_TIMESTAMP(createTime) as create_time,group_team_id,time_to_sec(createTime) as time_gap from release where id <= (select max_id from release_counter where id=1)
    sql_attr_uint       = is_deleted
    sql_attr_uint       = status
    sql_attr_uint       = env
    sql_attr_timestamp  = create_time
    sql_attr_uint       = group_team_id
    sql_attr_uint       = time_gap
    sql_attr_multi  = uint exec_time from query; SELECT release_id,exec_time from sql_exec_time
}

source delta_release:release_src
{
    sql_query_pre           = SET NAMES utf8
    sql_query               = select id,applicant,operation,reason,dbname,scrum_key,bug_key,content,is_deleted,status, CRC32(env) as env,UN
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值