booleanClauses属性的意义
貌似是查询条件有几个逻辑判断而不是参数长度。
如下面两种情况
a:1 OR b:2 AND C:3那么此时booleanClauses=3
id(1 2 3 4 5) 那么此时booleanClauses=5
当使用slor查询时,有时候我们的查询条件会非常多,由于solr的booleanquery默认设置的条件数为1024,所以超过这个限制的
会报异常too many boolean clauses Exception,这样设置的原因是为了限制过多条件查询,降低查询的性能,但有时候又必须这样查,或分析数据用, 所以可以临时改变下,修改方法:
1、 在solr的实例中有一个conf的文件solrconfig.xml文件中 在<query>的标签下有一个<maxBooleanClauses>1024</maxBooleanClauses>,单纯只修改这个1024,重启solr后并不会生效。
原因:
maxBooleanClauses属性是全局的lucene配置,当存在多个实例core时,只修改其中一个,当solr在加载的时候,只会取最后一个加载的core设置的maxBooleanClauses值。所以如果你的solr里面存在多个core,那么必须给每一个core都配置maxBooleanClauses。
注:在solr最新版本中solrhome->solr.xml,全局设置中需要设置booleanClauses
<int name="maxBooleanClauses">${solr.max.booleanClauses:1024}</int>
这样全局变量设置与单个core设置应该就可以了,不需要全部core都修改了。
2、 solr配置了最大请求参数之后post请求大小不够的话,还需要调整tomcat的post请求限制。
即修改tomcat的conf/server.xml文件
<Connector connectionTimeout="20000" port="8088" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="-1" maxHttpHeaderSize ="102400"/>
maxPostSize与maxHttpHeaderSize的属性
3、 代码把请求模式改成post模式,如
QueryResponse qr = solr.query(this.getSolrQuery(ids));
改成
QueryResponse qr = solr.query(this.getSolrQuery(ids),METHOD.POST);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2011-12-10 CA认证流程
2008-12-10 SharePoint