スキーマファクトリーの設定
solrconfig.xml の <schemaFactory>
solrconfig.xml
の <schemaFactory>
は、システムが管理スキーマと schema.xml
のどちらを使用するかを定義します。
<config>
<schemaFactory>
...
</schemaFactory>
</config>
スキーマ API の「読み取り」機能はすべてのスキーマタイプでサポートされていますが、スキーマの変更をプログラムで実行するためのサポートは、使用中の <schemaFactory/>
に依存します。
スキーマファクトリー
ManagedIndexSchemaFactory
solrconfig.xml
ファイルで <schemaFactory/>
が明示的に宣言されていない場合、Solr は暗黙的に ManagedIndexSchemaFactory
を使用します。これはデフォルトで "mutable"
(編集可能) であり、スキーマ情報を managed-schema.xml
ファイルに保持します。
スキーマ API を使用してスキーマを変更するには、管理スキーマを使用する必要があります。ただし、管理スキーマを使用しても、Solr をスキーマレスモード (または「スキーマ推測」モード) で使用しているという意味ではありません。
スキーマレスモードでは、まだ有効になっていない場合は管理スキーマを有効にする必要がありますが、完全なスキーマ推測には、スキーマレスモードセクションで説明されているように追加の設定が必要です。
以下は、Solr のデフォルトを反映した schemaFactory
の例です。
<schemaFactory class="ManagedIndexSchemaFactory">
<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema.xml</str>
</schemaFactory>
デフォルトは、ManagedIndexSchemaFactory
を明示的に設定し、以下のオプションのいずれかを変更することでオーバーライドできます。
mutable
-
オプション
デフォルト:
true
スキーマデータへの変更が可能かどうかを制御します。スキーマ API で編集を許可するには、これを
true
に設定する必要があります。上記のデフォルト設定では、スキーマ API を使用してスキーマを自由に変更し、後で
mutable
の値をfalse
に変更してスキーマを「ロック」し、今後の変更を防ぐことができます。 managedSchemaResourceName
-
オプション
デフォルト:
managed-schema.xml
スキーマファイルの名前。名前は
schema.xml
以外であれば何でも構いません。schema.xml
という名前はClassicIndexSchemaFactory
用に予約されているためです。
スキーマファクトリーの変更
schema.xmlからマネージドスキーマへの切り替え
ClassicIndexSchemaFactory
を使用している既存のSolrコレクションがあり、マネージドスキーマを使用するように変換したい場合は、solrconfig.xml
を変更してManagedIndexSchemaFactory
の使用を指定するだけで済みます。
Solrを再起動し、schema.xml
ファイルが存在するが、managedSchemaResourceName
ファイル(つまり「managed-schema.xml」)が存在しないことを検出すると、既存のschema.xml
ファイルの名前がschema.xml.bak
に変更され、内容がマネージドスキーマファイルに書き直されます。
結果のファイルを見ると、ページの先頭に次の記述があります。
<!-- Solr managed schema - automatically generated - DO NOT EDIT -->
これで、Schema APIを使用して変更を行い、schema.xml.bak
を削除できるようになりました。
マネージドスキーマからschema.xmlへの切り替え
マネージドスキーマを有効にしてSolrを起動していて、手動でschema.xml
ファイルを編集するように切り替えたい場合は、次の手順を実行する必要があります。
-
managed-schema.xml
ファイルの名前をschema.xml
に変更します。 -
solrconfig.xml
を修正して、schemaFactory
クラスを置き換えます。-
ManagedIndexSchemaFactory
定義が存在する場合は削除します。 -
上記のように
ClassicIndexSchemaFactory
定義を追加します。
-
-
コアをリロードします。
SolrCloudを使用している場合は、ZooKeeperを介してファイルを変更する必要がある場合があります。bin/solr
スクリプトは、ZooKeeperからファイルをダウンロードし、編集後にアップロードするための簡単な方法を提供します。詳細については、ZooKeeper操作のセクションを参照してください。
|