我想知道是否可以索引和存储大小超过4GB的大型文件。我没有遇到任何问题并且搜索文档有一个例外 - 我无法检索并突出显示匹配文档的内容。下面的代码允许我创建可搜索的索引而不会耗尽内存。
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中是否有一个功能可以解决我的问题?我已经有了一个解决方案,可以分割文件并完成我想要实现的目标,而无需在多个服务器上水平扩展应用程序并创建文件块。
提前致谢!
答案 0 :(得分:1)
您真的需要将这些文件存储在Lucene索引中吗?这只会增加开销并减慢一切。
只需将这些文件存储在文件系统中,并在Lucene文档中有路径引用(例如/path/to/file
)。
内容索引应该没问题,只要你有足够的RAM可用。