我在Lucene.Net中使用IndexWriter編寫了許多文檔。由於需要添加文檔,所以我想知道在提交之前是否需要添加最佳文檔數量。顯然太多了,如果發生崩潰,你可能會失去內存中的所有內容,太頻繁地在每個文件被添加後都會加速吞吐量。IndexWriter commit的Lucene .NET頻率
1
A
回答
0
在達到非常高的數字之前,似乎並不存在性能問題。
Total time to commit [10] messages was [00:00:00.1093779]
Total time to commit [20] messages was [00:00:00.0156221]
Total time to commit [40] messages was [00:00:00]
Total time to commit [80] messages was [00:00:00.0312509]
Total time to commit [160] messages was [00:00:00.0156231]
Total time to commit [320] messages was [00:00:00.0156273]
Total time to commit [640] messages was [00:00:00.0312489]
Total time to commit [1280] messages was [00:00:00.0312509]
Total time to commit [2560] messages was [00:00:00.0500343]
0
這不是一個好的答案,看似簡單的問題。除了「這取決於」 ......
這取決於很多因素,如:
- 多大每個文檔?如果它們很大(很多領域,大領域),那麼當沖刷發生時,數字將會很小
- 什麼是用例?你批量插入?如果是,那麼它的值越高越好,IO越少,吞吐量越高。你是否需要立即承諾/堅持/堅持文檔。那麼你應該承諾每一次添加/更新。很多的IO,但是如果頻率很低。然後是無限的光譜。
您最好設置「setRAMBufferSizeMB」而不是「setMaxBufferedDocs」。限制使用的內存量使基礎架構需求更具可預測性。默認情況下,lucene按內存大小刷新(默認爲16MB)。
還有另一種方法。將緩衝區大小設置爲相當高的數字。但也有一個定時器定期提交。這可以在緩衝和可能「失去」更新的時段之間達到平衡。
是否存在與文檔關聯的遞增「ID」?如果是這樣,請確保它是一個領域。然後在啓動時,您可以通過使用一個ID降序排序(如「通過ID desc選擇頂級1順序」)執行查詢來查詢最新的文檔,並從那裏重新啓動更新。
如果沒有ID,則添加數字日期字段並將DateTime.UtcNow.Ticks放入其中。這成爲你的「更新遊標」。
要牢記的另一件事是搜索延遲。攝取文檔和搜索文檔之間的時間。您可以遵循NRT模式並幾乎完全保持最新狀態。但是有成本。或者你可以決定一些延遲是可以接受的。在這種情況下,您可以更明智地決定何時刷新讀取器/搜索器。
更多的概念性討論。如果您可以提供關於各種關注點和參數的更多細節,我可以更具體一些。
相關問題
- 1. Lucene的IndexWriter類澄清
- 2. Lucene IndexWriter線程安全
- 3. Lucene - 打開一個封閉的IndexWriter
- 4. Lucene IndexWriter已經設置異常
- 5. Lucene:在索引時覆蓋詞頻率
- 6. Lucene .Net優化過程
- 7. Lucene .NET更新數據
- 8. 的Lucene 4.0 - IndexWriter類錯誤:沒有可用的
- 9. 爲什麼Lucene IndexWriter寫過以前的文檔?
- 10. TermFreqVector Lucene的.NET
- 11. c#中的信號計算頻率.net
- 12. 使用Lucene創建一個術語頻率的地圖
- 13. 在SearchManager中使用IndexWriter
- 14. 如何使用lucene的shingleanalyzerwrapper + standardanalyzer + indexreader?
- 15. 創建lucene索引的方法
- 16. 分組Lucene搜索結果和計算頻率由
- 17. 從Lucene索引中獲取最高頻率項
- 18. 查找所有至少具有給定查詢詞頻率的Lucene文檔
- 19. 概率和頻率
- 20. .NET的Lucene搜索萬事
- 21. Java Lucene與.Net的集成
- 22. 從Lucene的
- 23. 使用索引讀取器代替IndexWriter/SnapshotDeletionPolicy的Lucene熱索引備份
- 24. 列出按頻率排列的對象,頻率最高的頻率
- 25. 在離線Solr/Lucene索引上多久調用一次commit?
- 26. Lucene.net IndexWriter鎖獲得
- 27. lucene中的精確度和召回率
- 28. 在將索引文件添加到索引後忘記關閉Lucene IndexWriter
- 29. Indexwriter類中的Forcemerge函數
- 30. Python中的頻率