Solr4.* Solr5.* 增量更新

    前提:linux

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

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

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

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

    entity的query属性是全量更新时须要用到的;日志

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

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

        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

附:参考文档

一、solr官方文档

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

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

相关文章
相关标签/搜索