2014-09-04 67 views
0

我試圖調試Solr的一些代碼,和剛剛好奇地瞭解兩者的區別dataimporthandler承諾:差異承諾和Solr的

UpdateRequestHandler extends ContentStreamHandlerBase extends RequestHandlerBase

,因此UpdateRequestHandler使用RequestHandlerBase.handleCommitcommit=true

但我想不通DataImportHandler哪個方法調用commit=true

回答

1

DataImportHandlerline 308 - 313 (for 4.8.1 at least) in org.apache.solr.handler.dataimport.DocBuilder處執行提交。這根據實施情況調用commit on org.apache.solr.handler.dataimport.SolrWriter,這又將creates an instance of org.apache.solr.update.CommitUpdateCommand發送到org.apache.solr.update.processor.UpdateRequestProcessor

所以流程是:

DataImportHandler 
    DocBuilder 
    SolrWriter 
     CommitUpdateCommand 
     UpdateRequestProcessor 
+0

是否存在,即使在'CommitUpdateCommand'被調用,還是「刪除」的消息沒有得到承諾盤的可能性。 因爲根據我的調試,所有這些方法都被調用,但我看不到在光盤上爲刪除消息編制索引消息,但它對於添加消息正常工作。 – Shweta 2014-09-05 11:20:54