2

現在、インデックス作成を実行するコードを完全に制御できないアプリケーションのインデックス作成速度の改善に取り組んでいます。インデックス作成コードが各ドキュメントの後にコミットを行うことがわかりましたが、これはパフォーマンス上の理由から避けたいものです。

質問:

Solr で、クライアントから明示的に行われたすべてのコミットを無効にし、代わりに Solr 構成で構成された自動コミットのみに依存することは可能ですか?

4

2 に答える 2

2

賢い質問!

私は多くのアプリケーションで同じことを見てきました。それは誰もが最初に犯す間違いです。そのままではSolrでは不可能ですが、自分で書いて達成​​できるものだUpdateRequestProcessorと思います。

現時点では、これを構成で行うことはできませんが、processCommitメソッドを空のメソッドまたは単にログ行でオーバーライドすることはおそらく可能です。自動コミットが同じワークフローを使用しない限り、それはうまくいくはずですが、そうではありませんが、私はチェックします。とにかく、これを簡単にテストできます。

独自のコンポーネントを作成したら、solr で jar として使用できるようにし、更新リクエスト プロセッサ チェーン ( solrconfig.xml)で構成する必要があります。

<updateRequestProcessorChain>
    <processor class="solr.NoCommitUpdateRequestProcessorFactory" />
    <processor class="solr.LogUpdateProcessorFactory" />
    <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

デフォルトのリクエスト プロセッサである最後の 2 行を忘れないでください。そうしないと、すべての更新リクエストが何も実行されません。

于 2013-04-09T13:06:33.447 に答える