4

古い 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 のすべてのコア間で構成を共有するより良い方法はありますか?

4

1 に答える 1

1

同じ問題がありました。core.properties フォルダーに相対パスを指定しようとしましたが、うまくいきませんでした。

最終的に、SOLRHome フォルダーに conf フォルダーを作成し、core/conf ディレクトリにシンボリック リンクを作成しました。

シンボリックリンクを作成するために実行したコマンドは次のとおりです。

ln -s ../../conf/solrconfig.xml solrconfig.xml
ln -s ../../conf/schema.xml schema.xml
于 2013-09-17T16:40:21.070 に答える