我正在使用Solr处理类似于名字:年龄:性别:余额:下一个余额:利息的数据。
我有3000万条记录,总计4G。我只检索了年龄为23岁的50条记录。在schema xml中,我设置了indexed="true"。但是Solr似乎将整个磁盘上的索引加载到内存中(4G)。它不应该只将40多条记录检索到内存中吗?
我正在使用Solr处理类似于名字:年龄:性别:余额:下一个余额:利息的数据。
我有3000万条记录,总计4G。我只检索了年龄为23岁的50条记录。在schema xml中,我设置了indexed="true"。但是Solr似乎将整个磁盘上的索引加载到内存中(4G)。它不应该只将40多条记录检索到内存中吗?
<!-- documentCache caches Lucene Document objects (the stored fields for each document).
-->
<documentCache
class="solr.LRUCache"
size="16384"
initialSize="16384"/>
存储但未索引的字段保存在磁盘上而非内存中。然而,所有记录都被100%地索引在内存中,这些索引包含了所有已索引的字段。但是倒排索引对此相当有效。
然而,当您进行查询时,SOLR会将与匹配记录相关的所有存储(但未索引)字段内容检索到内存中。这通常被认为是可取的缓存行为,因为它意味着搜索结果可以更快地传输,从而减少了整体查询响应时间。像往常一样,在SOLR中,您可以通过多种方式配置缓存行为以匹配您的内存预算和数据库需求。请查看solrconfig.xml中的可能性。
请注意,这是一个复杂的领域,如果您的主要信息来源是Google,则可能会发现很难完全理解缓存。这是一个最好从SOLR书籍中学习的领域。