2011-04-13 43 views
0

我們有基於Lucene的自家搜索服務。前段時間我遇到的一個特別問題是獲取IndexWriter的待處理更改的數量。如果掛起的更改計數器爲零,則不需要提交索引,請重新打開IndexReaderIndexSearcher等。此外,我們還有一些應用程序級別的邏輯鏈接到IndexReader.commit()調用,如果在提交點沒有實際更改,最好不要調用它。獲取IndexWriter上未決更改的數量

我可以訪問調用方法IndexReader.updateDocument()IndexReader.remove()的所有地方,所以我只需編寫自己的掛起更改計數器即可。但我intrested可能是已經存在一個在Lucene API本身? API檢查沒有給我足夠的關於該主題的信息。

回答

3

您可以使用IndexWriter.numRAMDocs來獲取添加的文檔數量,但我認爲沒有公共API來獲取緩衝刪除的當前計數。

IndexWriter.ramSizeInBytes在這裏也可能有用。它會告訴你有多少內存正在使用中,因此當你添加或刪除文檔時這會增加(但在刷新時會減少)。

請注意,如果您提交從IndexWriter,即變化,如果你已經掛起的變化,但還沒有提交(或關閉)筆者則IndexReader.isCurrent仍然會返回true IndexReader.isCurrent僅僅是可用的。