解決solr 請求參數過長報錯too many boolean clauses Exception

        當使用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;

2、solr配置了最大請求參數之後,還需要調整tomcat的最大請求頭,即修改tomcat的conf/server.xml文件  <Connector connectionTimeout="20000" port="8088" protocol="HTTP/1.1" redirectPort="8443" maxHttpHeaderSize=""/> maxHttpHeaderSize的屬性就是請求頭的大小設置;

3、把請求模式改成post模式;

QueryResponse qr = solr.query(this.getSolrQuery(ids));改成QueryResponse qr = solr.query(this.getSolrQuery(ids),METHOD.POST);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章