現在、Riak KV サーバー内で Solr 実装を使用しています。Riak のデフォルトに関して、またソフトウェアのアップグレードを恐れないように、コアの SolrConfig.xml に追加の構成を含める必要があります。これは、Ansible コマンドを使用してプログラムで行います。工場出荷時の設定solrconfig.xmlにできるだけ少ない行を追加したい。
この種のパターンを使用したかったので、構成内にたくさんの<searchComponent>
とを含める必要があります。<requestHandler>
<config>
<!-- snip -->
<xi:include href="solrconfig_extra.xml" xpointer="xpointer(//searchComponent)" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="solrconfig_extra.xml" xpointer="xpointer(//requestHandler)" xmlns:xi="http://www.w3.org/2001/XInclude" />
</config>
次のような構成ファイルを使用します。
<?xml version="1.0" encoding="UTF-8" ?>
<container>
<searchComponent class="solr.SpellCheckComponent" name="suggest">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookupFactory</str>
<str name="field">myterms</str> <!-- the indexed field to derive suggestions from -->
<float name="threshold">0</float>
<str name="buildOnCommit">false</str>
<!--
<str name="sourceLocation">american-english</str>
-->
</lst>
</searchComponent>
<requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest">
<lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.count">5</str>
<str name="spellcheck.collate">true</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
</container>
残念ながら、Xerces はxpointer()
スキーマをサポートしておらelement()
ず、要素インデックスを受け入れる唯一の要素として、インクルード コンテナーが子を持つのと同じ量の挿入が必要になります。
どうすればこのインクルージョンを整然と達成できますか?
- xerces から別の xmlparser に切り替えるのは簡単ですか? ベンダーのソリューションをできるだけ変更したくないことを思い出してください。
- SolrConfig 文法には、構成に含めることができる中立的な要素がある可能性があります (たとえば、 /config/NEUTRALMAGICTAG/requestHandler は /config/requestHandler として解釈されます)。
- XInclude を放棄して忘れて、純粋な ansible ファイル エディションを使用する必要がありますか?