7

SolR DataImportHandlerの構成ファイルには、データベースに対して実行するSQLクエリ、結果の列をSolRドキュメント・フィールドにマップする方法、そしてもちろん、データベースに接続するために必要なパラメーターが含まれています。

私たちのプロジェクトでは、データベース接続パラメーター(具体的にはデータベースパスワード)が環境ごとに変化するため、環境ごとに構成XMLファイル全体のわずかに異なるコピーを1つ維持する必要があります。

SQLステートメントおよび宣言とは別にデータベース接続パラメーター(特にパスワード)を構成して、各構成が1回だけ維持されるようにする方法はありますか?

4

2 に答える 2

5

実際、これは標準のsolr構成を使用して実行できます。

まず、solrconfig.xmlでデータソースを定義する必要があります[Solrconfigでのデータソースの追加を参照]

次に、 XIncludeを使用してDIH構成を別のファイルに外部化できます

私はこのアプローチを使用して、ローカル構成ファイルを使用することと、異なるコア間で接続を一元化することの両方を行っています。


例:solrconfig.xmlに、以下を追加します。

<xi:include href="../../common-config/local.dih.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

local.dih.xmlは次のようになります。

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  <lst name="defaults">
    <str name="config">data-config.xml</str>
    <lst name="datasource">
      <str name="name">mongo</str>
      <str name="type">MongoDataSource</str>
      <str name="database">myMongoDb</str>
    </lst>
    <lst name="datasource">
      <str name="name">psql</str>
      <str name="driver">org.postgresql.Driver</str>
      <str name="type">JdbcDataSource</str>
      <str name="url">jdbc:postgresql://localhost:5432/myPsqlDb</str>
      <str name="user">dbUser</str>
      <str name="password">dbPassword</str>
    </lst>
  </lst>
</requestHandler>  
于 2013-04-28T15:01:44.310 に答える
2

これはSolrの既知の問題です。

SolrドキュメントまたはSolrEntrepriseServerの本を見ると、key = valueでcore1.propertiesを使用し、xml構成ファイルでkeyを使用できると言われています...しかし、私の経験では機能しません。私はそれをいくつかの方法で試しましたが、これについてはsolrメーリングリストに未解決の質問があります。

したがって、醜い回避策に頼る必要があります(テンプレートxmlファイルを使用し、#password#を実際のパスワードに置き換えるなど)。

于 2012-06-28T13:27:28.837 に答える