[Solr]solrconfig.xmlのinitParamsについて
solrconfig.xml には initParams というセクションがあります。これはリクエストハンドラのパラメータを指定するためのものです。リクエストハンドラのパラメータは基本的にそのハンドラの定義内で設定するものですが、initParams セクションには以下の役割があります。
- いくつかのリクエストハンドラで共通するのパラメータのセットを1箇所で定義する
- solrconfig.xml に定義の無い Implicit RequestHandler のパラメータを指定する
たとえば _default コンフィグセットの solrconfig.xml には以下の initParams 定義があります。
<initParams path="/update/**,/query,/select,/spell"> <lst name="defaults"> <str name="df">_text_</str> </lst> </initParams>
path 属性で指定されているのは各リクエストハンドラのパスです。
アスタリスク2個のワイルドカードはそのパス以下のすべての階層を意味します。(アスタリスク1個なら1レベル下の階層まで)
initParams は name 属性を持つこともできます。たとえば以下の定義だとすると
<initParams path="/update/**,/query,/select,/spell" name="defaultParams"> <lst name="defaults"> <str name="df">_text_</str> </lst> </initParams>
リクエストハンドラの定義において “defaultParams” という名前で参照できます。
<requestHandler name="/demo" class="DemoHandler" initParams="defaultParams"/>
各パラメータは defaults, appends, invariants のいずれかのオプションを指定できます。
それぞれのオプションの意味は以下の通りです。
- defaults クエリ実行時に該当パラメータが指定されなかった場合のデフォルト値として使われる。
- appends クエリ実行時に指定されたパラメータに追加して追加して使われる。
- invariants クエリ実行時に必ず使われる。ユーザが指定したパラメータで上書きされることはない。