現在、インデックス作成を実行するコードを完全に制御できないアプリケーションのインデックス作成速度の改善に取り組んでいます。インデックス作成コードが各ドキュメントの後にコミットを行うことがわかりましたが、これはパフォーマンス上の理由から避けたいものです。
質問:
Solr で、クライアントから明示的に行われたすべてのコミットを無効にし、代わりに Solr 構成で構成された自動コミットのみに依存することは可能ですか?
賢い質問!
私は多くのアプリケーションで同じことを見てきました。それは誰もが最初に犯す間違いです。そのままではSolrでは不可能ですが、自分で書いて達成できるものだUpdateRequestProcessor
と思います。
現時点では、これを構成で行うことはできませんが、processCommit
メソッドを空のメソッドまたは単にログ行でオーバーライドすることはおそらく可能です。自動コミットが同じワークフローを使用しない限り、それはうまくいくはずですが、そうではありませんが、私はチェックします。とにかく、これを簡単にテストできます。
独自のコンポーネントを作成したら、solr で jar として使用できるようにし、更新リクエスト プロセッサ チェーン ( solrconfig.xml
)で構成する必要があります。
<updateRequestProcessorChain>
<processor class="solr.NoCommitUpdateRequestProcessorFactory" />
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
デフォルトのリクエスト プロセッサである最後の 2 行を忘れないでください。そうしないと、すべての更新リクエストが何も実行されません。