2013-05-22 43 views
0

我想知道是否可以索引和存儲大小超過4GB的大文件。除了一個例外,我沒有遇到任何問題並且搜索文檔 - 我無法檢索並突出顯示匹配文檔的內容。下面的代碼允許我創建可搜索的索引而不會耗盡內存。Lucene.net與大文件

var doc = new Document(); 
doc.Add(new Field(string, TextReader)); 

將其更改爲下面的行最終會導致內存不足異常。

new Field(string, TextReader.ReadToEnd(), Field.Store.YES, Field.Index.ANALYZED) 

我能夠索引和存儲28個文件,每個150MB允許我搜索和檢索匹配的文本。但是,查詢性能不可接受,並且在兩三次搜索後,會拋出內存不足異常。我瞭解例外的原因以及它發生的原因。社區的問題是我錯過了什麼? Lucene API中是否有解決我的問題的功能?我已經有了一個解決方案,可以分割文件並做我想做的事情,而不必在多臺服務器之間水平擴展應用程序並創建文件塊。

在此先感謝!

回答

1

你真的需要將這些文件存儲在Lucene索引?這隻會增加開銷並減慢一切。

只需將這些文件存儲在文件系統中,並在Lucene文檔中具有路徑引用(例如/path/to/file)。

儘管如此,索引的內容應該沒問題,只要您有足夠的RAM空間即可。

+0

不存儲文件內容的問題是匹配文本的高亮顯示。只要您不必在匹配的文件中顯示幾行突出顯示的關鍵字,索引就不是問題。 – Dennis