Solr4を動かしてみるシリーズの2回目です。
2.1. コアとは?
solrのコアとは、検索エンジンそのものを差します。
サーチャーやインデクサーの定義、インデックスデータの管理、プラグインの管理などを行う単位です。
solrは1.4系からマルチコアに対応し、コアごとにこれらの設定を行えるようになりました。
例えば、
- 本のタイトルと内容から検索する
- 著者の名前と自己紹介から検索する
例を考えてみます。
本のタイトルと内容から検索したいケースと、著者の名前と自己紹介から検索したいケースは同じではない方が多いかと思います。
ここで著者と本の内容が混ざってしまうと、欲しい結果を得るのが難しくなります。
よって、こういうケースでは2つの検索エンジンを用意する必要があります。
- 本用の検索エンジン
- 著者用の検索エンジン
そこで、マルチコアの機能を使います。
※solrでは、マルチコアがデフォルトです。
シングルコアはマルチコアの長さ1のものと同じなので、
マルチコアを使用してもシングルコアのみを使用しても、設定はだいたい同じです。
2.2. コアの宣言
solrインスタンスに、
- どんなコアが
- いくつあるか
を、solrは起動時に探索します。
solr4.4以降の探索ロジックは、下記のブログに詳しく記載されていました。
ここではてっとり早く、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を見ていきます。