我得到如下异常 -
错误 [http-bio-8085-exec-28] org.apache.solr.core.SolrCore - org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount 设置为 1024 at org.apache.lucene.search.BooleanQuery.add(BooleanQuery.java:136) at org.apache.lucene.search.BooleanQuery.add(BooleanQuery.java:127) at org.apache.lucene.search.ScoringRewrite$1.addClause(ScoringRewrite.java:51) at org.apache.lucene.search.ScoringRewrite$1.addClause(ScoringRewrite.java:55)
根据我的理解,此异常出现在 QueryTime(当查询子句越过此处的限制时,在本例中为 1024),但这可以在索引时出现吗?
我在日志中有这个,但不确定这是在哪个进程(索引/查询)中发生的?
谢谢。开发
我在使用 Lucene BooleanQuery
时也遇到了此错误。我得到以下异常:
org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 1024.
原因是查询词超出了BooleanQuery
限制。您可以使用 BooleanQuery.setMaxClauseCount(10000);
来解决此问题。但是,您应该小心,因为这可能会导致OutOfMemory
错误。
通常,索引新数据不涉及查询,因此在添加文档时不应看到此查询。
但是,在更新或删除文档时,可以使用查询(例如,使用 deleteDocuments(Query query)
)检索它们。 删除或更新查询复杂到足以生成 1024 个子句是不寻常的,但它可能会发生。
不过,它更有可能是搜索查询的结果。