Rails アプリケーションに Solr をインストールしました (sunspot を使用)。
テーブルの 1 つでいくつかの列のインデックスを solr に再作成してもらいたいのですが、テーブルがかなり大きい (~50M レコード)。
使用する推奨バッチサイズは? 現在、私は1000を使用しており、1日以上実行しています。
何か案は?
Rails アプリケーションに Solr をインストールしました (sunspot を使用)。
テーブルの 1 つでいくつかの列のインデックスを solr に再作成してもらいたいのですが、テーブルがかなり大きい (~50M レコード)。
使用する推奨バッチサイズは? 現在、私は1000を使用しており、1日以上実行しています。
何か案は?
バッチ サイズはそれほど重要ではありません。おそらく 1000 で問題ありませんが、それ以上大きくするつもりはありません。これは、ドキュメントのサイズ、各ドキュメントにインデックスが作成されるテキストのバイト数によって異なります。
各バッチの後にコミットしていますか? それは遅くなる可能性があります。最後に 1 つのコミットで 23M のドキュメント インデックスを読み込みます。ドキュメントは小さく、書籍のメタデータであり、約 90 分かかります。その速度を得るには、ロードに 1 つの SQL クエリを使用する必要がありました。サブクエリを使用すると、約 10 倍遅くなりました。
私は DataInputHandler で JDBC サポートを使用していますが、DB クエリを作成してバッチを送信するカスタム コードに移行する可能性があります。
CSV 入力ハンドラーは非常に効率的であると聞いたので、データを CSV にダンプしてから、そのハンドラーで読み込むとうまくいくかもしれません。