Apache Solrの検索でtoo many boolean clausesと言われた時

細かい話で恐縮ですが、自分のメモも兼ねて。

Apache Solrで作ったインデックスに細々検索をかけて、少し他の人にもチェックをお願いしたら、少し長めの文字列で検索した時に以下のようなエラーが出るという報告をいただきました。

{
  "responseHeader":{
    "status":400,
    "QTime":82,
    "params":{
      "q":"title:初期仏典における十支縁起説の成立"}},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.lucene.search.BooleanQuery$TooManyClauses"],
    "msg":"org.apache.solr.search.SyntaxError: Cannot parse 'title:初期仏典における十支縁起説の成立': too many boolean clauses",
    "code":400}}

一文字減らすと問題なく検索できるという状況で、別の文字列だともっと長くても大丈夫だったので、おそらくcharfilterで実際の検索式が長くなりすぎているのでは…と思ったものの、検索式をいじることはできない(というか、気合いがあればできますが、その後のアップデートに対応できなくなるので避けるべし)ので、設定でなんとかならいあものかと調べていたところ、以下のサイトをみつけました。

yomon.hatenablog.com

なるほど、solrconfig.xmlか、最初に読み込まれるコアのものをとりあえず書き換えればいいのか、と思ってsolrconfig.xmlを見てみたところ、

 If this per-collection limit is greater then the global `maxBooleanClauses` limit specified in `solr.xml`, it will have no effect, as that setting also limits the size of user specified boolean queries.

などとなっていましたので、solrconfig.xml中のmaxBooleanClausesの値を増やした後に、solr-8.4.1/server/solr/solr.xml の方も

<int name="maxBooleanClauses">${solr.max.booleanClauses:2048}</int>

という風に値を増やして、bin/solr restart。これで動くようになりました。ほっ。