web-dev-qa-db-ja.com

Luceneのパフォーマンスの最適化

Luceneのパフォーマンスを最適化するさまざまな方法は何ですか?

キャッシュAPIを使用してlucene検索クエリを保存し、クエリを再度作成するオーバーヘッドを節約しますか?

24
user40907
18
Mitch Wheat

クイックヒント:

  • インデックスのサイズは小さくしてください。必要のない場合は、規範、用語ベクトルを排除します。必須の場合にのみ、フィールドにストアフラグを設定します。
  • 明らかですが、頻繁に繰り返される間違い。 Searcherのインスタンスを1つだけ作成し、再利用します。
  • 高速ディスクのインデックスを保持します。あなたが妄想的であるならば、RAM。
12
Shashikant Kore

チート。 RAMDirectory を使用して、インデックス全体をRAMにロードします。その後、すべてが速く燃えています。 :)

4
Emil H

ここにはたくさんのデッドリンクがあります。

これらの(やや公式の)リソースは、私が始めるところです:

http://wiki.Apache.org/lucene-Java/ImproveIndexingSpeed

http://wiki.Apache.org/lucene-Java/ImproveSearchingSpeed

4
Marcus

パフォーマンスに関する質問に対する最善の答えは、プロファイルを作成することです。ガイドラインはすばらしいですが、データセットのサイズ、実行しているクエリの種類、データ型など、パフォーマンスに影響を与える可能性のある変数はたくさんあります。

Netbeansプロファイラー または同様のものを入手して、さまざまな方法で試してください。ミッチによってリンクされた記事を使用しますが、何が助けになり、何が(しばしば驚くべきことに)痛いのかを実際にテストするようにしてください。

また、yourコードのパフォーマンスの向上と比較して、Luceneから得られるパフォーマンスの違いがわずかである可能性もあります。プロファイラーはそれも指摘します。

3
Nathan Voxland

64ビットマシンの場合、コアLuceneコミッターの1つによって ここ でよく説明されているように、 RAMDirectory の代わりに MMapDirectory を使用します。

1
Shailendra