我有两组搜索索引。
TestIndex(在我们的测试环境中使用)和ProdIndex(在生产环境中使用)。
Lucene 搜索查询: +date:[20090410184806 TO 20091007184806] 对于测试索引工作正常,但对于 Prod 索引给出此错误消息。
“maxClauseCount 设置为 1024”
如果我在执行搜索查询之前执行以下行,那么我不会收到此错误。
BooleanQuery.SetMaxClauseCount(Int16.MaxValue);
searcher.Search(myQuery, 收集器);
我在这里错过了什么吗?为什么在测试索引中没有收到此错误?两个索引的架构相同。它们仅在记录/数据数量方面有所不同。PROD 索引的记录数量(大约 1300 条)比测试一中的记录数量(大约 950 条)更高。
范围查询本质上被转换为布尔查询,其中一个子句对应每个可能的值,并通过 OR 组合在一起。
例如,查询 +price:[10 to 13] 转换为布尔查询
+(price:10 price:11 price:12 price:13)
假设索引中存在所有值 10-13。
我想,您所有的 1300 值都在您给出的范围内。因此,布尔查询有 1300 个子句,高于默认值 1024。在测试索引中,没有达到 1024 的限制,因为只有 950 个值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)