0

これは些細な質問かもしれませんが、私は既存の Solr インデックスに追加しようとしており、そこにあるものを毎回上書きしているようです。データを取得している 2 つのデータベースがあり、各データベースから個別にデータをインポートできますが、1 つのデータベースからデータをインポートし、すぐに 2 つ目のデータベースからデータをインポートすると、最初のデータベースが上書きされます。db-config.xml ファイルに 2 つの dataSource をマップし、標準の管理 UI を使用してインポートを実行しています。私の設定ファイルは次のようになります。

<dataConfig>
  <dataSource 
    name="ds-1"
    type="JdbcDataSource" 
    driver="Driver"
    url="jdbc_url1" 
    user="user1" 
    password="pass1"/>

<dataSource
    name="ds-2"
    type="JdbcDataSource" 
    driver="Driver"
    url="jdbc_url2" 
    user="user2" 
    password="pass2"/>

   <document>

 <entity name="entity1" dataSource="ds-1" query="SELECT YYY  FROM TABLE">
      ...
    </entity>

 <entity name="entity2" dataSource="ds-2" query="SELECT ZZZ FROM TABLE">
      ...
    </entity>

  </document>
</dataConfig>

元のインデックスが上書きされないようにするにはどうすればよいですか? 常にさまざまなソースからデータを段階的に追加したいので、インデックスを消去することでうまくいきます。

4

1 に答える 1

1

あなたの問題は、おそらくインデックス付きドキュメントのキーをデータベースの主キー ID に定義していて、値が重複していることです。これを防ぐには、Solr に一意の ID を指定する必要があります。通常、過去にこの問題に遭遇したときは、文字列フィールドを id フィールドとして使用し、データベースの id に 1 つか 2 つの文字を追加して一意にしました。例: Product テーブルのアイテムには P1、P2 などの ID があり、Orders テーブルのアイテムには O1、O2 などの ID があります。

データ インポート ハンドラーTemplateTransformerを使用して、これを実現できるはずです。

于 2013-03-27T15:49:31.873 に答える