LoginSignup
6
4

More than 5 years have passed since last update.

Solr でクエリを投げたら「too many boolean clauses 」と怒られた

Posted at

現象

こういうクエリを投げたら怒られた

q=*:*&fq=item_id:(12)&start=0&rows=40&sort=item_id desc&&q=item_id:(4 OR 6 OR 10 OR 17 OR ... OR 15000 )

原因

クエリーを作成するために結合できる節の最大数を超えてしまったとのこと。

対処方法

そもそも OR で大量に ID を並べているのおかしいので処理を見直す

これが一番正しい。

solrconfig.xml の maxBooleanClauses を上げる

そのままの通り、結合できる節の制限値を上げる。これはコア別に設定できないという制限があるので、すべてのコアに影響を与えてしまうことに要注意

ちなみにここの一番下のところにも書いてある
https://wiki.apache.org/solr/CoreAdmin

AND の場合は filter query にする

今回の場合、OR で繋ぎたいので、これはできないが、AND の場合は以下の一番下のサンプルのように一つ一つフィルタに分解することで対処することができる。

q=item_id:1 AND item_id:2 AND item_id:3 ... AND item_id:15000 // これはだめ
q=*:*&fq=item_id:(1 2 3 ... 10) // これもだめ
q=*:*&fq=item_id:1&fq=item_id:2& ... &fq=item_id:15000 // これはOK

巨大な boolean query を実行する必要がなくなるから制限値に引っかからないそうな。
詳細は以下の URL を参照。
http://solr.pl/en/2011/12/19/do-i-have-to-look-for-maxbooleanclauses-when-using-filters/

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4