2009-06-27 7 views

答えて

0

Luceneのインデックス作成のパフォーマンスを向上させる最も簡単な方法は、IndexWriterのmergeFactorインスタンス変数の値を調整することです。この値は、ディスクに書き込む前にメモリに格納するドキュメントの数と、複数のセグメントをマージする頻度をLuceneに通知します。

http://search-lucene.blogspot.com/2008/08/indexing-speed-factors.html

3

私はLuceneのインデックスを並列化する方法についてはひどい記事を書きました。本当にひどく書かれていますが、それはhereです(ご覧になるサンプルコードがあります)。

主なアイデアは、あなたのデータをかなりの部分にまとめ、別のスレッドでそれらの部分を処理することです。それぞれの作品が完成したら、すべてを1つのインデックスにマージします。

上記のアプローチを使用すると、私は約400万レコードにインデックスを付けることができます。 2時間。

希望すると、ここからどこに行くのかが分かります。

+0

こんにちはエステバン ありがとうございました。私はあなたのやり方に似たものを探しています。あなたのブログにいくつかのコードスニペットを投稿してください。 ありがとう、 ゴクル – Gokul

1

書き込み側(マージファクタ)と計算アスペクト(パラレル化)を別にすれば、最も単純な理由があります。多くの人々がデータのデータベースからLuceneインデックスを作成します。場合によっては、このデータの特定のクエリが複雑すぎて、すべての(200万?)レコードを実際に返すのが遅いことがあります。クエリとディスクへの書き込みを試してください。まだ5〜9時間程度であれば、最適化する場所が見つかりました(SQL)。

1

私は物事をスピードアップするために必要な場合は、以下の記事は本当に私を助けた:

http://wiki.apache.org/lucene-java/ImproveIndexingSpeed

私はその文書の建設は、当社の主要なボトルネックがわかりました。データアクセスを最適化し、その他の推奨事項を実装した後、私はインデックス作成のパフォーマンスを大幅に向上させることができました。

関連する問題