之前写的关于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

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

被折叠的 条评论
为什么被折叠?



