coreseek全文检索如何配置增量索引

1,为什么使用增量索引?

        当数据源中已有数据很多,而新增的数据相对已有数据来说较少时,可使用增量索引,因为全部数据重新建立索引需要消耗大量时间。使用增量索引可以实现近实时的索引更新。增量索引建立完成后,可以将它合并到主索引中。

2,大概实现的思路:

         在配置文件(如csft.conf)中设置两个数据源和两个索引,分别用于主索引和增量索引。在数据库中额外增加一个表,用来记录每次主索引已经索引到的最大ID。而增量索引索引的则只是ID大于这个最大ID的记录。每次重建主索引时会更新这个最大的ID(主索引的重建可选择每天进行一天,而使用增量索引则可实时的索引新增的数据)。

3,具体的实现:
I,建立上述所说的计数表:

CREATE TABLE `sph_counter` (
  `counter_id` int(11) NOT NULL,
  `max_doc_id` int(11) NOT NULL,
  PRIMARY KEY (`counter_id`)
);
II,csft.conf配置文件的配置:

主数据源src1增加一个预查询:

sql_query_pre = REPLACE INTO sph_counter SELECT 1,MAX(id) FROM shops;
shops为你要索引和查询的表。主查询(sql_query)的查询条件设置为:

     WHERE id<=(SELECT max_doc_id FROM sph_counter WHERE counter_id=1);
增量数据源source delta_src:src1的主查询(sql_query)的查询条件设置为:

    WHERE id>(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)

注意两个数据源的sql_query应包含相同的字段,不然可能报错。
主索引test1的配置不变。增量索引index delta:test1的配置和主索引的配置大致相同,只需复制主索引的配置,再修改source和path,如下:

    source = delta_src
    path = /usr/local/csft/var/data/delta
III,完成上述配置后,可单独建立增量索引以处理新增数据(若想不重启searchd的情况下更新索引,可添加--rotate选项):
    /usr/local/csft/bin/indexer -c /usr/local/csft/etc/csft.conf delta
此时使用/usr/local/csft/bin/search查询数据时,结果有两部分:一部分是主索引test1的查询结果,一部分是增量索引delta的查询结果。
IV,合并索引,语法如下:
    indexer --merge DSTINDEX SRCINDEX [--rotate]
即把索引SRCINDEX合并到DSTINDEX上去,如上面的例子就是:
    indexer --merge test1 delta [--rotate]
合并索引后就可以在主索引test1上“看到”新增的数据了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值