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

相關文章
相關標籤/搜索