ダメ人間オンライン

あまり信用しないほうがいい技術メモとか備忘録とかその他雑記

Solrで「undefined field text」って言われた時の対処

Solr弱者なもんで設定でハマったのでメモ。

カラムを横断して検索するために問い合わせるクエリを q=field:value ではなく q=value で問い合わせて(dismax|edismax)で処理しようとしたら一生「undefined field text」って言われて困った。

textって名前のフィールドなんてないよ!って言われてるんだけど、schema.xmlを見てもtextなんてフィールド名は指定してない。

ググって出てきた解決方法は大概、exampleからコピーして編集したschema.xmlの中に元々サンプルで書いてあったtextとか残ってる気がするからそれを消せ!って感じだったけどschema.xmlの中にはなかった。

結論を言うとschema.xmlではなくてsolrconfig.xmlのほうに問題があった。

これもsolr/example/の下にあるやつをベースにして編集したんだけど、その中の

<requestHandler name="/select" class="solr.SearchHandler">

の中に

<str name="df">text</str>

てのがあってそれを消したら直った。

サンプルの設定でカラムの名前が"text"だとわかり辛いし、それでsolrconfig.xmlもすごく長くてどこをどう環境に合わせて変更すべきなのかがいまいちわかり辛い気がした。