Sphinx 2.3配置迁移至Sphinx 3.1版本的修改点咨询
Sphinx 2.3 转 3.1 配置修改指南
概念澄清
- 你配置中使用的
type=mysql是数据源类型,定义索引构建时从MySQL拉取数据,该用法完全兼容Sphinx 3.1,不需要修改 - 官方示例中出现的
type=rt是实时索引类型,属于索引的存储分类,和你当前使用的普通磁盘索引(plain类型,Sphinx 2.x默认不写即为plain)是并行的两类索引,没有强制替换要求,如果你不需要实时增量写入数据的场景,继续使用原有plain索引即可。
必须调整的配置项
1. index模块
Sphinx 3.x要求显式声明索引类型,原有普通磁盘索引需要新增一行type = plain,其余参数均兼容无需修改。
2. 废弃参数清理
- 旧版本
charset_type参数在3.x中已废弃,默认强制使用utf-8,你原有配置中已注释该参数,无需额外处理 - 旧版本
inplace_enable参数在3.x中已拆分废弃,你原有配置中已注释该参数,无需额外处理
3. 符号转义修正
原有配置中sql_query语句里的>、<是HTML转义符,直接替换为原生的>、<即可。
修改后的完整配置
source src1_c_march_april_2020 { type = mysql sql_host = 67.225.224.103 sql_user = enspekto_wrdp3 sql_pass = xxxxxxx sql_db = enspekto_wrdp3 sql_port = 3306 # optional, default is 3306 sql_query_pre = SET CHARACTER_SET_RESULTS=utf8 sql_query_pre = SET NAMES utf8 sql_query_range = SELECT MIN(wpf7_readibility_content_index.tw_scrap_data_id)+10921149,MAX(wpf7_readibility_content_index.tw_scrap_data_id)-632561+631300 FROM wpf7_readibility_content_index sql_range_step = 100000 sql_query = SELECT wpf7_readibility_content_index.id,wpf7_readibility_content_index.tw_scrap_data_id, wpf7_readibility_content_index.content,TABLE1.id, UNIX_TIMESTAMP( TABLE1.sql_date ) AS added_ts \ FROM wpf7_readibility_content_index \ INNER JOIN TABLE1 ON TABLE1.id = wpf7_readibility_content_index.tw_scrap_data_id WHERE wpf7_readibility_content_index.tw_scrap_data_id >=$start AND wpf7_readibility_content_index.tw_scrap_data_id <=$end sql_attr_uint = tw_scrap_data_id sql_field_string = content sql_attr_timestamp = added_ts } index test1_march_april_2020 { type = plain # 3.x要求显式声明索引类型 source = src1_c_march_april_2020 path = /home2/spindexes/test1_march_april_2020 html_strip = 1 html_remove_elements = style, script, object, embed, span expand_keywords = 1 blend_chars = +,&->:# } indexer { mem_limit = 1024M max_iosize = 1048576 max_iops = 40 write_buffer = 2M } searchd { listen = 9312 listen = 9306:mysql41 log = /var/log/sphinx/searchd.log query_log = /var/log/sphinx/query.log read_timeout = 5 max_children = 30 pid_file = /var/run/sphinx/searchd.pid seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 workers = threads # for RT to work binlog_path = /home2/spindexes/ } common { lemmatizer_base = /usr/local/share/sphinx/dicts/ }
迁移后操作说明
配置更新完成后需要重新构建全量索引,执行indexer --all --rotate即可正常使用。如果后续需要支持实时更新数据,再考虑切换为rt索引,切换后需要将数据同步逻辑改为调用Sphinx实时写入接口,不再需要通过MySQL数据源定时构建索引。
内容的提问来源于stack exchange,提问作者Faizan
相关产品推荐
相关产品推荐

