异常为Org.apache.lucene.search.BooleanQuery $ TooManyClauses:maxClauseCount设置为XXXX

时间:2013-10-30 08:28:01

标签: solr lucene solr-query-syntax

我得到如下的异常 -

ERROR [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)     在org.apache.lucene.search.BooleanQuery.add(BooleanQuery.java:127)     在org.apache.lucene.search.ScoringRewrite $ 1.addClause(ScoringRewrite.java:51)     在org.apache.lucene.search.ScoringRewrite $ 1.addClause(ScoringRewrite.java:55)

根据我的理解,这个例外来自QueryTime(当查询子句在这种情况下超过它的限制时,在这种情况下为1024)但是这可以在索引时间到来吗?

我在日志中有这个,并且不确定发生了哪个进程(索引/查询)?

感谢。 开发

2 个答案:

答案 0 :(得分:0)

通常,索引新数据不涉及查询,因此在添加文档时不应该看到这一点。

但是,在更新或删除文档时,可以使用查询检索它们(例如,使用deleteDocuments(Query query))。删除或更新查询足够复杂以生成1024子句是不常见的,但它可能会发生。

更有可能的是,它是搜索查询的结果。

答案 1 :(得分:0)

使用Lucene BooleanQuery时,我也遇到了此错误。我得到以下异常:

org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 1024.

原因是查询字词超出BooleanQuery限制。您可以使用 BooleanQuery.setMaxClauseCount(10000); 解决此问题。但是,您应该小心,因为这可能会导致OutOfMemory错误。