Solr配置maxBooleanClauses属性不生效原因分析
来源:互联网 发布:java split 去除空格 编辑:程序博客网 时间:2024/06/08 20:18
- 博客分类:
上次已经写过一篇关于solr中,查询条件过多的异常的文章,这次在总结扩展一下:
有时候我们的查询条件会非常多,由于solr的booleanquery默认设置的条件数为1024,所以超过这个限制的
会报异常,这样设置的原因是为了限制过多条件查询,降低查询的性能,但有时候又必须这样查,或分析数据用,
所以可以临时改变下,修改方法:
修改solrconfig.xml文件:
理想情况下,配置完这个属性,重启应该就生效了,但是让你意外的是,并没有生效,拼接5000个查询条件,依然报这个异常:
为什么? 仔细看solr的文档里面,写这下面一段话:
什么意思?大致就是说,这个属性是全局的lucene配置,如果你的solr里面存在多个core,那么必须多个core的配置
文件都得配置maxBooleanClauses才会生效,否则只有当你配置的那个core最后一个被加载时,它才会生效,如果不幸,不是最后一个加载,那么即使你设置成20000那么它默认还是1024,这就是为什么配置完成之后依旧不生效的原因,散仙的场景中,参数大概有8000多个,虽然改变配置可以查询,但不建议这么用,内存不给力的情况下,查询速度非常之慢,用于离线分析某些数据,倒还可以接受。
影音先锋电影 http://www.iskdy.com/
最后在补充一些查询知识:
总结:
(1)如果是or操作多个条件,只能配置最大限制条件
(2)如果是and操作多个条件,可以上面的3方法,而不用配置最大限制条件
有时候我们的查询条件会非常多,由于solr的booleanquery默认设置的条件数为1024,所以超过这个限制的
会报异常,这样设置的原因是为了限制过多条件查询,降低查询的性能,但有时候又必须这样查,或分析数据用,
所以可以临时改变下,修改方法:
修改solrconfig.xml文件:
伦理片 http://www.dotdy.com/
- <maxBooleanClauses>20000</maxBooleanClauses>
理想情况下,配置完这个属性,重启应该就生效了,但是让你意外的是,并没有生效,拼接5000个查询条件,依然报这个异常:
- 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的配置
文件都得配置maxBooleanClauses才会生效,否则只有当你配置的那个core最后一个被加载时,它才会生效,如果不幸,不是最后一个加载,那么即使你设置成20000那么它默认还是1024,这就是为什么配置完成之后依旧不生效的原因,散仙的场景中,参数大概有8000多个,虽然改变配置可以查询,但不建议这么用,内存不给力的情况下,查询速度非常之慢,用于离线分析某些数据,倒还可以接受。
影音先锋电影 http://www.iskdy.com/
最后在补充一些查询知识:
- //过滤的几种写法
- (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方法,而不用配置最大限制条件
0 0
- Solr配置maxBooleanClauses属性不生效原因分析
- spring+mybatis使用事务管理不生效原因分析
- tomcat-users.xml配置不生效的原因
- 关于修改log4j配置不生效的原因
- 关于tomcat 中的 tomcat-users.xml 配置不生效原因
- 关于tomcat 中的 tomcat-users.xml 配置不生效原因
- 关于tomcat 中的 tomcat-users.xml 配置不生效原因
- git ignore不生效原因
- 配置urlrewrite不生效
- 【Linux】limits.conf 不重启就生效或者不生效的原因
- SpringMVC多个@Configuration配置下部分@Bean不生效的原因和解决方法
- radio设置属性checked属性不生效
- python logging.basicConfig不生效的原因
- js事件不生效的原因
- springAOP事物管理不生效原因总结
- springAOP事物管理不生效原因总结
- queryTimeout对Cobar不生效的原因
- springAOP事物管理不生效原因总结
- Android SDK 开发范例大全 ---3.9调用另一个Activity
- 云之讯官方测试Demo音频版源码阅读(编辑)
- Android Context完全解析
- [Win32]一个调试器的实现(四)读取寄存器和内存
- 关于有偿提供拼图响应式后台的通知
- Solr配置maxBooleanClauses属性不生效原因分析
- 一个简单轮播案例
- Informatica - MD5
- 不联网的情况下使用maven
- 底部导航用FragmentTableHost实现
- Android Touch事件分发过程详解
- Eclipse快捷键
- adb shell su 后不能写命令
- 一个关于多线程池任务配合的项目的总结