2012-01-30 72 views
1

我在Web應用程序中使用只讀Lucene.NET索引,併爲所有請求創建一個單一的IndexSearcher。爲此的創建過程是線程安全的,正如根據文檔的IndexSearcher方法一樣。Lucene.NET IndexSearcher如何在內存中讀取和存儲索引?

我的問題是圍繞IndexSearcher打開後如何在內存中存儲索引。它是否在創建時將整個索引讀入內存?

我問,因爲該應用程序使用(可能)數百個不同的指數,在大約。 27MB(磁盤上),每個都有一個新的IndexSearcher。我想知道這將如何影響工作進程的內存使用情況。

回答

1

IndexSearcher不會將整個索引存儲在內存中,而是它的底層讀取器緩存有關字段,術語和段的一些信息。所需內存的數量會有很大差異,具體取決於索引中的內容等。

使用如此大量的索引將影響進程所消耗的總內存。增加更少的指數通常會更好。

如果您打算使用幾百個索引,我會建議首先使用實際生產數據測試您的方法的可伸縮性。

相關問題