gpt4 book ai didi

Lucene SimpleFacetedSearch Facet 计数超过 2048

转载 作者:行者123 更新时间:2023-12-01 14:45:59 26 4
gpt4 key购买 nike

我在我使用 SimpleFacetedSearch 功能进行分面搜索的项目之一中遇到了使用 Lucene.net 的问题。

抛出异常

Facet count exceeded 2048

我有 3 列,一旦添加另一个方面我就会遇到异常。

如果我删除所有其他方面,新方面就会起作用。

深入研究 SimpleFacetedSearch 的源代码,我可以在 SimpleFacetedSearch 的构造函数内部看到它正在检查分面的数量不超过 MAX_FACETS,这是一个设置为 2048 的常量。

  foreach (string field in groupByFields)
{
...
num *= fieldValuesBitSets1.FieldValueBitSetPair.Count;
if (num > SimpleFacetedSearch.MAX_FACETS)
throw new Exception("Facet count exceeded " + (object) SimpleFacetedSearch.MAX_FACETS);
fieldValuesBitSets.Add(fieldValuesBitSets1);
...
}

但是因为它是公开的,所以我可以这样设置它。

SimpleFacetedSearch.MAX_FACETS = int.MaxValue;

有谁知道为什么将它设置为 2048 以及更改它是否有问题?我找不到关于它的任何文档。

最佳答案

不,更改它应该没有任何问题。但请记住,当搜索结果很大但分面数不超过 some 时,使用 Bitsets(由 SimpleFacetedSearch 内部完成)性能更高数字。 (比如说 1000 个方面 1000 万次点击)

如果您有更多的方面但搜索结果不大,您可以迭代结果(在收集器中)并创建方面。这样你可以获得更好的性能。 (比如 100K 面 1000 次命中)

因此,2048 可能是一个优化数字,超过它可能会导致性能损失。

关于Lucene SimpleFacetedSearch Facet 计数超过 2048,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521503/

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