古い solr.xml 形式から 4.4 のコア自動検出に移行したいのですが、以前のようにコア間で構成 (solrconfig.xml、schema.xml、および依存ファイル) を共有するのに問題があります。
私の古いsolr.xmlは次のようでした:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true">
<cores defaultCoreName="core1" adminPath="/admin/cores">
<core instanceDir="."name="core1" dataDir="core/core1"/>
<core instanceDir="."name="core2" dataDir="core/core2"/>
...
</cores>
</solr>
ディレクトリ構造:
solr.xml
conf
schema.xml
solrconfig.xml
...
core
core1
core2
...
このようにすべてが完全に機能し、構成全体がコア間で共有されました。すべてのコアのインスタンスディレクトリが同じで、confディレクトリがその下にあるため、機能していました。
4.4 のコア自動検出では、すべてのコアで同じインスタンス ディレクトリを使用することはできません。しかし、私はうまくいく解決策を見つけました:
ディレクトリ構造:
solr.xml
common
conf
schema.xml
solrconfig.xml
...
core
core1
core.properties
data
core2
core.properties
data
...
solr.xml :
<solr>
<str name="sharedLib">common</str>
</solr>
core.properties :
name=core1
shareLib ディレクティブのおかげで、conf ディレクトリがクラスパスにあるため機能します。しかし、管理 Web アプリケーションで構成ファイルを表示できないため、完全に満足できるものではありません。次の例外が発生します。
java.lang.NullPointerException
at org.apache.solr.handler.admin.ShowFileRequestHandler.showFromFileSystem(ShowFileRequestHandler.java:210)
at org.apache.solr.handler.admin.ShowFileRequestHandler.handleRequestBody(ShowFileRequestHandler.java:122)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1904)
4.4 のすべてのコア間で構成を共有するより良い方法はありますか?