Solr将整个索引加载到内存中

时间:2012-03-14 14:54:38

标签: java solr indexing

我正在使用solr获取类似的数据 名称:年龄:性别:平衡:nextbalance:兴趣

我在磁盘上总共有30条M记录。我按年龄检索:23只有50条记录。我在schema xml中有indexed =“true”。 Solr似乎将磁盘上的整个索引加载到内存(4G)中。它不应该只将40多条记录检索到内存中吗?

3 个答案:

答案 0 :(得分:5)

也许这是文档缓存。您需要指定它的大小。您能否在solrconfig.xml中查看以下内容?

<!-- documentCache caches Lucene Document objects (the stored fields for each document).
  -->
<documentCache
  class="solr.LRUCache"
  size="16384"
  initialSize="16384"/>

答案 1 :(得分:4)

我认为这取决于你如何配置缓存(它在内存中的作用和不保留)。无论查询如何,将整个索引加载到内存中都可以在检索结果所需的时间方面带来巨大的性能提升。

有关配置缓存的详细信息以及有关性能因素的详细信息:

答案 2 :(得分:1)

存储但未编入索引的字段保存在磁盘上但不保存在RAM中。但是,100%的记录确实在RAM中编入索引,并且这些索引包含所有索引字段。但倒排索引相当有效。

但是,当您执行查询时,SOLR会将整个存储(但未编入索引)字段内容集检索到RAM中以查找匹配的记录。这通常被认为是理想的缓存行为,因为这意味着可以更快地传输搜索结果,这会缩短整体查询周转时间。与SOLR一样,您可以通过多种方式配置缓存行为,以满足RAM预算和数据库需求。看看solrconfig.xml中的可能性。

请注意,这是一个复杂的区域,如果Google是您的主要信息来源,您可能会发现很难完全理解缓存。这是一个最好从SOLR的书籍中学习的领域。