sphinx做增量索引更新合并

本文深入解析了使用Sphinx构建搜索引擎时的关键步骤,包括创建辅助表、设置主索引与增量索引的数据源、配置索引定义、创建更新所有索引、更新增量索引以及合并增量索引到主索引等。通过具体实例,阐述了如何高效地管理和优化搜索索引。
在利用 Sphinx 做搜索引擎的时候,一般他的索引建立构成有如下几个部分:
  1. 固定不变的主索引
  2. 增量索引重建
  3. 索引数据合并

在实际操作中,需要为增量索引的建立创建辅助表,这样才可以记住最后建立索引的记录ID,做实际的增量部分的索引建立。

1、创建辅助表
CREATE TABLE `sph_counter` (
  `counter_id` int(11) NOT NULL,
  `max_doc_id` int(11) NOT NULL,
  PRIMARY KEY (`counter_id`)
ENGINE=MyISAM DEFAULT CHARSET=utf8

2、在主索引的数据源中作如下方式的取数据设置

#源定义
source mysql
{
    type                  = mysql
    sql_host              = localhost
    sql_user              = root
    sql_pass              = root
    sql_db                = test
    sql_port              = 3306

    sql_query_pre         = SET NAMES utf8
    sql_query_pre         = SET SESSION query_cache_type=OFF
    sql_query_pre         = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documents

    sql_query             = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents WHERE id<=(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)

    sql_attr_uint         = group_id
    sql_attr_timestamp    = date_added
    sql_query_info        = SELECT * FROM documents WHERE id=$id
}

3、在增量索引的数据源中作如下方式的取数据设置,需要注意的是sql_query_pre要和主索引数量相同,不然查询结果不是想要的内容
#增量索引 源定义
source delta:mysql{
    sql_query_pre         = SET NAMES utf8
    sql_query_pre         = SET SESSION query_cache_type=OFF
    sql_query_pre         =
    sql_query             = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents WHERE id>(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
}

4、主索引index定义配置如下
#index定义
index mysql
{
    source          = mysql             #对应的source名称
    path            = /usr/local/coreseek/var/data/ #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    docinfo         = extern
    mlock           = 0
    morphology      = none
    min_word_len    = 1
    html_strip      = 0

    charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
    #charset_dictpath = etc/
    charset_type      = zh_cn.utf-8
}

5、增量索引index定义配置如下
#增量索引 index定义
index delta:mysql{
    source          = delta
    path            = /usr/local/coreseek/var/data/delta/
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type    = zh_cn.utf-8
}

6、创建更新所有索引
$sudo /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/dict/csft_mysql.conf --all --rotate
如果配置正确的话,现在辅助表sph_counter中已经添加了一条数据

7、更新增量索引
$sudo /usr/local/coreseek/bin/indexer delta -c /usr/local/coreseek/dict/csft_mysql.conf --rotate

8、合并增量索引到主索引
$sudo /usr/local/coreseek/bin/indexer --merge -c /usr/local/coreseek/dict/csft_mysql.conf --rotate

9、启动sphinx的守护进程searchd
$sudo /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/dict/csft_mysql.conf
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值