gpt4 book ai didi

Solr/Lucene fieldCache OutOfMemory 对动态字段的错误排序

转载 作者:行者123 更新时间:2023-12-04 15:46:20 25 4
gpt4 key购买 nike

我们有一个 Solr 核心,大约有 250 TrieIntField s(声明为 dynamicField)。我们的 Solr 索引中有大约 1400 万个文档,许多文档在其中的许多领域都有一定的值(value)。我们需要在一段时间内对所有这 250 个字段进行排序。

我们面临的问题是底层的lucene fieldCache很快就被填满了。我们有一个 4 GB 的盒子,索引大小是 18 GB。在对 40 或 45 个这些动态字段进行排序后,内存消耗约为 90%,我们开始收到 OutOfMemory 错误。

现在,如果消耗的总内存超过 80%,我们每分钟都会运行一个 cron 作业重新启动 tomcat。

从我读到的内容来看,我知道限制可排序 Solr 字段上不同值的数量会降低 fieldCache空间。这些可排序字段中的值可以是 0 到 33000 之间的任何整数,并且分布非常广泛。我们考虑了一些扩展解决方案,但处理整个问题的最佳方法是什么?

更新:我们认为而不是排序,如果我们确实提升它不会去 fieldCache。因此,而不是发出像这样的查询
select?q=name:alba&sort=relevance_11 desc
我们尝试了
select?q={!boost relevance_11}name:alba
但不幸的是,提升也会填充字段缓存:(

最佳答案

我认为你有两个选择:

1)增加内存。
2) 通过指定 facet.method=enum 强制 Solr 不使用字段缓存, as per documentation .

还有一个solr-user mailing list thread讨论同样的问题。

除非您的索引很大,否则我会选择选项 1)。这些天RAM很便宜。

关于Solr/Lucene fieldCache OutOfMemory 对动态字段的错误排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13393248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com