Apache Solr 新規コアの設定方法

Apache Solrではコアと呼ばれる単位で検索対象のデータ構造を定義するスキーマ等を保持する。
なのでApache Solrの勉強に新規にコアを作成・スキーマを定義して、Apache Solrを起動しようとしたらうまく動かなくて、つまずいたので記録。

構築環境は下記。

  • CentOS 6.7
  • Apache Solr-4.5.1
  • OpenJDK-1.7.0

まず、Apache Solrをインストールするとサンプルディレクトリが付いていて、その中にApache Solrを動かすのに必要なファイル等が一通り入っているので、それをコピーして流用する。(一から作るのは慣れないうちは大変…)

Apache Solrには「Solrホームディレクトリ」と呼ばれる、Solrサーバ稼働中にさまざまな場面でファイルを参照する起点となるディレクトリがある。
その中にコアに関する設定ファイルがあるのでそれを修正する。

これでコアの設定は終わったので、検索するデータに関する定義をschema.xmlに記載して、いざApache Solrを起動するとエラーとなり起動できなかった。

「textが定義されていない」という内容のエラーメッセージなので、schema.xmlにtextという定義に関して何か設定ミスがあるのかと思って調べてみたけれども、「text」という内容はどこにも記載していなかった。
いろいろ調べてみた結果schema.xmlではなく、コアの動作に関する設定ファイルであるsolrconfig.xmlの中の設定が原因だった。

どうもrequestHandlerの設定で「text」というフィールドをデフォルトで検索するようになっていた為に、「undefined field text」と怒られていたみたい。
下記リンクが参考になった。
stack overflow

デフォルトで検索するフィールドをshema.xmlで定義しているフィールドに設定すると、エラーとなることなくApache Solrの起動に成功。