Solr4.* Solr5.* 增量更新

    前提:

        a、基于Solr 4.10.3的Solr-cloud,部署在linux操作系统,Tomcat 8容器中;

        b、在使用solr,对solr有了解。

    最近在做一基于Solr的全文检索的功能,在实现增量更新的时候碰到了一些问题,总结下来供参考。

    实现增量更新的关键是solr的db-data-config.xml(名称可能不同,此处是solr官方example中的名称)的配置,如下:

    entity的query属性是全量更新时需要用到的;

        SQL:比较典型的可能没有条件语句

    entity的deltaImportQuery属性是增量更新时导入数据用的,如果没有这个属性,则执行query属性中的sql,为了结果集更准确,deltaImportQuery是增量更新必备的;

        SQL:比较典型的应该包含  主键=dataimporter.delta.主键  的查询条件

    entity的deltaQuery属性是也是增量更新时需要用到的,作用是得到需要更新到solr中的数据的主键,也就是给deltaImportQuery提供数据。

        SQL:比较典型的应该包含  修改时间>${dataimporter.last_index_time}  的查询条件

    以上是不包含子entity的情况,如果包含子entity,子entity中有以下不同:

    子entity中的deltaQuery中查询出来的结果,主要用于提供子表中变化的数据集给parentDeltaQuery,parentDeltaQuery的作用是根据deltaQuery提供的结果集,查询出主表受影响的结果集。

    如果包含多个子entity,那么在增量更新时,会先通过子表的deltaQuery和parentDeltaQuery得到所有主表需要更新的数据集,然后执行主表的deltaQuery也得到一个需要更新的数据集,将这两个集合合并之后,再依次执行主entity的deltaImportQuery和子entity的deltaImportQuery,或者他们的query属性定义的sql。

    注:只需要将solr的日志级别设置为debug就可以看到详细的日志输出了,有了日记分析增量更新的执行流程就很简单了 :D

附:参考文档

1、solr官方文档

2、http://zzstudy.offcn.com/archives/8104

3、http://eksliang.iteye.com/blog/2097146



转载于:https://my.oschina.net/u/2288883/blog/388742

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值