在Solr中索引重型数据集

时间:2013-06-05 10:13:31

标签: solr lucene

我试图将1个特定字段的重数据集索引真的太重(使用DIH)......

然而,当我开始时,我得到内存警告和回滚(OutOfMemoryError)。所以,我已经了解到我们可以在java命令中使用-Xmx1024m选项来启动solr并为堆分配更多内存。

我的问题是,既然这也可能在以后变得不够,那么问题与缓存有关吗?

这是我在solrconfig中的缓存块:

<filterCache class="solr.FastLRUCache"
                 size="512"
                 initialSize="512"
                 autowarmCount="0"/>

<queryResultCache class="solr.LRUCache"
                     size="512"
                     initialSize="512"
                     autowarmCount="0"/>

<documentCache class="solr.LRUCache"
                   size="512"
                   initialSize="512"
                   autowarmCount="0"/>

我想也许我需要为“documentClass”转换缓存。谁有更好的主意?或许这里还有另一个问题?

只是为了让你知道,直到我添加了非常重的数据库字段进行索引,一切都很好......

1 个答案:

答案 0 :(得分:1)

可能是因为缓存,当然。没有更多信息很难说。

但是,我会说,不,您不应该关闭文档缓存,请参阅documentCache上的文档。

  

documentCache的大小应始终大于<max_results> * <max_concurrent_queries>,以确保Solr在请求期间不需要重新获取文档。

如果需要,您可以稍微调整缓存设置。回头参考上面的文档,您可以了解延迟加载文档的建议。

更好的方法可能是:您无法在索引中存储大量数据集。一种非常典型的模式是索引大型数据集,但将它们完全存储在索引外部,并从您真正需要的任何外部数据源中获取它们。

1GB内存也可能不足以支持你想用扩展数据集对你的SOLR实例做什么。