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

Java Solr将整个索引加载到内存中,java,solr,indexing,Java,Solr,Indexing,我将solr用于类似以下内容的数据 姓名:年龄:性别:余额:下一个余额:利息 我在磁盘上有3000万条记录,总计达4G。我是按年龄检索的:23岁,也就是50条记录。我在模式xml中索引了=“true”。Solr似乎将磁盘上的整个索引加载到内存中(4G)。难道它不应该只将40多条记录检索到内存中吗 我认为这取决于您如何配置缓存(它在内存中做什么和不做什么)。将整个索引加载到内存中可以大大提高检索结果所需的时间,而不管查询是什么 有关配置缓存的详细信息,以及有关性能因素的详细信息: 这可能是文档

我将solr用于类似以下内容的数据 姓名:年龄:性别:余额:下一个余额:利息


我在磁盘上有3000万条记录,总计达4G。我是按年龄检索的:23岁,也就是50条记录。我在模式xml中索引了=“true”。Solr似乎将磁盘上的整个索引加载到内存中(4G)。难道它不应该只将40多条记录检索到内存中吗

我认为这取决于您如何配置缓存(它在内存中做什么和不做什么)。将整个索引加载到内存中可以大大提高检索结果所需的时间,而不管查询是什么

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


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

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

      存储但未编制索引的字段保存在磁盘上,但不保存在RAM中。然而,100%的记录确实是在RAM中索引的,这些索引包含所有索引字段。但反向索引在这方面相当有效

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


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

      我在23岁时尝试搜索时,记忆已经耗尽。它将整个索引加载到内存中。关于SOLR的性能调优,有什么好书值得学习呢?有书总比没有书好。SOLR非常容易设置,以至于许多人都没有花时间做一些研究,学习如何使用它提供的所有按钮和旋钮。因此,如果你阅读任何一本书并应用你所学的知识,你将远远领先于过于依赖默认设置和博客圈的一些食谱的人群。我现在已经看完了SOLR烹饪书,但现在我正在寻找更具教育意义的东西(我喜欢烹饪书,但它们对以后很有用)。我的经验表明,来自同行的推荐比没有要好。