我在Web应用程序中使用只读Lucene.NET索引,并为所有请求创建单个IndexSearcher
。这个过程的创建过程是线程安全的,根据文档的IndexSearcher
方法也是如此。
我的问题是关于IndexSearcher
在打开后如何将索引存储在内存中。它是否在创建时将整个索引读入内存?
我问,因为应用程序使用(可能)数百个不同的索引,大约是。每个27MB(在磁盘上),每个都有一个新的IndexSearcher
。我想知道这将如何影响工作进程的内存使用情况。
答案 0 :(得分:1)
IndexSearcher不会将整个索引存储在内存中,但它的底层读者会缓存有关字段,术语和段的一些信息。根据索引中的内容等,所需的内存量会有很大差异。
使用如此大量的索引会影响进程消耗的总内存。拥有更少的更大指数通常会更好。
如果您打算使用数百个索引,我建议首先使用真实的生产数据测试您的方法的可扩展性。