Lucene.NET IndexSearcher如何在内存中读取和存储索引?

时间:2012-01-30 12:32:48

标签: lucene.net

我在Web应用程序中使用只读Lucene.NET索引,并为所有请求创建单个IndexSearcher。这个过程的创建过程是线程安全的,根据文档的IndexSearcher方法也是如此。

我的问题是关于IndexSearcher在打开后如何将索引存储在内存中。它是否在创建时将整个索引读入内存?

我问,因为应用程序使用(可能)数百个不同的索引,大约是。每个27MB(在磁盘上),每个都有一个新的IndexSearcher。我想知道这将如何影响工作进程的内存使用情况。

1 个答案:

答案 0 :(得分:1)

IndexSearcher不会将整个索引存储在内存中,但它的底层读者会缓存有关字段,术语和段的一些信息。根据索引中的内容等,所需的内存量会有很大差异。

使用如此大量的索引会影响进程消耗的总内存。拥有更少的更大指数通常会更好。

如果您打算使用数百个索引,我建议首先使用真实的生产数据测试您的方法的可扩展性。