第2回 Solr4のコア設定

2013-11-25

Solr4を動かしてみるシリーズの2回目です。

2.1. コアとは?

solrのコアとは、検索エンジンそのものを差します。
サーチャーやインデクサーの定義、インデックスデータの管理、プラグインの管理などを行う単位です。
solrは1.4系からマルチコアに対応し、コアごとにこれらの設定を行えるようになりました。

例えば、

  1. 本のタイトルと内容から検索する
  2. 著者の名前と自己紹介から検索する

例を考えてみます。


本のタイトルと内容から検索したいケースと、著者の名前と自己紹介から検索したいケースは同じではない方が多いかと思います。
ここで著者と本の内容が混ざってしまうと、欲しい結果を得るのが難しくなります。

よって、こういうケースでは2つの検索エンジンを用意する必要があります。

  • 本用の検索エンジン
  • 著者用の検索エンジン

そこで、マルチコアの機能を使います。
※solrでは、マルチコアがデフォルトです。
シングルコアはマルチコアの長さ1のものと同じなので、
マルチコアを使用してもシングルコアのみを使用しても、設定はだいたい同じです。

2.2. コアの宣言

solrインスタンスに、

  • どんなコアが
  • いくつあるか

を、solrは起動時に探索します。
solr4.4以降の探索ロジックは、下記のブログに詳しく記載されていました。

新しいsolr.xmlとCore探索ロジック

ここではてっとり早く、solr.xmlに記述してしまいましょう。

$SOLR_HOME/solr.xmlを編集します。

<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
  <!--
  adminPath: RequestHandler path to manage cores.
    If 'null' (or absent), cores will not be manageable via request handler
  -->
  <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:8983}" hostContext="${hostContext:solr}">
    <core name="core0" instanceDir="core0" default="true" />
  </cores>
</solr>

↑/opt/solr/multicore/solr.xmlをサンプルに作成しました。
これでcore0がコアとして使われます。

collection1をcore0にリネームしておきます。

mv collection1 core0

2.3. コアディレクトリ内の構造

元collection1であるcore0の中を見てみると、README.txtがあります。
このREADMEによると

  • conf/ ・・・設定ファイル置き場だよー。solrconfig.xmlとschema.xml.は必ず置いてね♥
  • data/ ・・・デフォルトのインデックス及びレプリファイル置き場だよー。変更したときはconf/solrconfig.xml.で変更してね。
  • lib/ ・・・オプションだよん。プラグイン入れてね。

となっています。
data/についてですが、 conf/solrconfig.xmlを見ると、

<dataDir>${solr.data.dir:}</dataDir>

のように指定されています。
つまり、プロパティファイルで

solr.data.dir=/xxx

のように指定したり、起動オプションで

-Dsolr.data.dir=/xxx

のように指定することもできます。

次回、conf/schema.xmlを見ていきます。

3. Solr4のインデックス設定(さわりだけ)へ