技术库 > Java

Solr配置maxBooleanClauses属性

技术库:tec.5lulu.com

有时候查询条件会非常多,由于solr的booleanquery默认设置的条件数为1024,所以超过这个限制的会报异常,这样设置的原因是为了限制过多条件查询,降低查询的性能,但有时候又必须这样查,或分析数据用, 所以可以临时改变下,修改方法: 
修改solrconfig.xml文件:
  1. <maxBooleanClauses>20000</maxBooleanClauses>
理想情况下,配置完这个属性,重启应该就生效了,但是让你意外的是,并没有生效,拼接5000个查询条件,依然报这个异常:
  1. too many boolean clauses Exception
solr的文档里面
Max Boolean Clauses  
  
         Maximum number of clauses in each BooleanQuery,  an exception  
         is thrown if exceeded.  
  
         ** WARNING **  
  
         This option actually modifies a global Lucene property that  
         will affect all SolrCores.  If multiple solrconfig.xml files  
         disagree on this property, the value at any given moment will  
         be based on the last SolrCore to be initialized.    

这个属性是全局的lucene配置,如果你的solr里面存在多个core,那么将以最后一个加载的core的配置为准 
//过滤的几种写法  
 (1)q=category:1 AND category:2 AND category:3 ... AND category:2000  
(2)q=*:*&fq=category:(1 2 3 ... 2000)  
(3)q=*:*&fq=category:1&fq=category:2&fq=category:3&....&fq=category:2000  
总结: 
(1)如果是or操作多个条件,只能配置最大限制条件 
(2)如果是and操作多个条件,可以上面的3方法,而不用配置最大限制条件

Solr配置maxBooleanClauses属性


标签: solr lucene xml fq本文链接 http://tec.5lulu.com/detail/110djn2ehhgb9858f.html

我来评分 :6.1
0

转载注明:转自5lulu技术库

本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议

www.5lulu.com

  • There is no limit on the Solr side - we regularly use Solr in a similar way with tens of thousands of IDs in the query. You need to look at the settings for your servlet container (Tomcat, Jetty etc.) and increase the maximum POST size. Look up maxPostSize if you are using Tomcat and maxFormContentSize if you are using Jetty.