我有两组搜索索引。
TestIndex(在我们的测试环境中使用)和 ProdIndex(在 PRODUCTION 环境中使用)。
Lucene 搜索查询:+date:[20090410184806 TO 20091007184806] 适用于测试索引,但为 Prod 索引提供此错误消息。
"maxClauseCount is set to 1024"
如果我在执行搜索查询之前执行以下行,则不会出现此错误。
BooleanQuery.SetMaxClauseCount(Int16.MaxValue);
searcher.Search(myQuery, 收集器);
我在这里错过了什么吗?为什么在测试索引中没有出现这个错误?两个索引的架构是相同的。它们仅与记录/数据的数量不同。PROD 索引的记录数量(约 1300)比测试一(约 950)中的记录数量多.
最佳答案
范围查询本质上被转换为一个 bool 查询,每个可能的值都有一个子句,ORed在一起。
例如,查询 +price:[10 to 13] 转换为 bool 查询
+(price:10 price:11 price:12 price:13)
假设索引中存在所有值 10-13。
我想,你所有的 1300 个值都在你给出的范围内。所以,boolean查询有1300个子句,高于默认值1024。在测试索引中,没有达到1024的限制,因为只有950个值。
关于lucene - 找出 maxClauseCount 设置为 1024 错误的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1534789/