4

更新イベントで追加されたドキュメントのIDを使用してSOAPサービスを呼び出すようにSolrdataimport.EventListenerをセットアップしようとしています。org.apache.solr.handler.dataimport.EventListenerを実装するクラスがあり、getAllEntityFields()の結果がドキュメントIDのコレクションを生成すると思いました。残念ながら、メソッドの結果は空のリストを生成します。さらに紛らわしいのは、context.getSolrCore()。getName()が実際のコア名ではなく空の文字列を生成することです。ですから、私はここで正しい道を進んでいないようです。

現在の設定は次のとおりです。SQLで特定のsprocが呼び出されると、メッセージがキューに入れられます。このキューには、キューを読み取り、他のsprocを呼び出すプログラムを開始するリスナーがあります。sprocが完了すると、Solrでデルタまたは完全インポート操作が実行されます。直後に、キャッシュを更新するためのメソッドが呼び出されます。ただし、この更新メソッドが呼び出される前にSolrのインポート操作がまだ完了していない可能性があるため、キャッシュは「古い」データで更新される可能性があります。

他のオプションが非常に複雑に見えるため、dataimport EventListenerを使用してキャッシュを更新するメソッドを呼び出すことを望んでいました(たとえば、dataimport URLをポーリングして更新メソッドを呼び出すタイミングを決定するか、キューを使用して必要なドキュメントIDを一覧表示します更新され、EventListenerがサービスのメソッドを呼び出して、このキューを受信し、キャッシュを更新するようにします)。ドキュメントや例を見つけるのに少し苦労しています。誰かが私が問題にどのように取り組むべきかについて何か考えを持っていますか?

4

1 に答える 1

2

私が理解していることから、ドキュメントが追加されたときにキャッシュを更新しようとしています。実行している solr のバージョンに応じて、次のいずれかを実行できます。

Solr 4.0 には、これを可能にするスクリプト トランスフォーマーが用意されています。 http://wiki.apache.org/solr/DataImportHandler#ScriptTransformer

以前のバージョンの solr では、次の投稿で回答されているように、1 つのハンドラーを他のハンドラーの上にチェーンできます。 Solr とカスタム更新ハンドラー

于 2012-12-04T07:43:03.610 に答える