0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IndexWriterオブジェクト(二)

Posted at

このシーリズの文章は、IndexWriterを構造する流れを紹介します。主に3つの部分があります:
● インデックスでぃれくろのDirectoryをセットする
● IndexWriterのIndexWriterConfigをセットする
● IndexWriterコンストラクタを呼ぶ
前の文章では、もう不可変更コンフィグを紹介した上、続いて変更可能コンフィグを紹介する。

IndexWriterのIndexWriterConfig

変更可能コンフィグ

  変更可能配置には:MergePolicy、MaxBufferedDocs、RAMBufferSizeMB、MergedSegmentWarmer、UseCompoundFile、CommitOnClose、CheckPendingFlushUpdateがある。

MergePolicy

MergePolicyはsegmentの合併策略であり。インデックス目録から合併条件にふさわしいsegment集合(segment set)を探す処理方法である。2つの策略がある:LogMergePolicyとTieredMergePolicy。MergePolicyはIndexWriterConfig.setMergePolicy(MergePolicy mergePolicy)を通じて設定することができる。Lucene7.5.0にはデフォルト策略はTieredMergePolicyである。MergePolicyは変更されたと、次の合併の時に効くことになる。

MaxBufferedDocs、RAMBufferSizeMB

RAMBufferSizeMBはインデックスを説明するインフォメーションがCacheに保存する最大の使用空間である。ただし、MaxBufferedDocsは一つのDWPTの最大のファイル数である。
ファイルのCUD操作を行った後、FlushPolicyによって自動的なflushを判断する。Lucene7.5.0では、FlushByRamOrCountsPolicyという策略はMaxBufferedDocsとRAMBufferSizeMBによって判断する。
MaxBufferedDocsはIndexWriterConfig.setMaxBufferedDocs(int maxBufferedDocs)を通じて設定することができる。デフォルトバリューは-1であり、このMaxBufferedDocsを使わない意味をしている。
RAMBufferSizeMBはIndexWriterConfig.setRAMBufferSizeMB(double ramBufferSizeMB)を通じて設定することができる。デフォルトバリューは16Mである。

MergedSegmentWarmer

MergedSegmentWarmerはsegment合併の時、事前に新たなsegmentの情報を獲得しする。segment合併とファイルのCRUDは並列処理なので、パフォーマンスを向上することができる。
MergedSegmentWarmerはIndexWriterConfig.setMergedSegmentWarmer(IndexReaderWarmer mergeSegmentWarmer)を通じて設定することができる。デフォルトバリューはnullである。

UseCompoundFile

UseCompoundFileはブーリアンである。バリューはtrueだと、flushやcommitの操作で生成したファイルはCompoundFileで、すなわち.cfs、.cfeである。
UseCompoundFileはIndexWriterConfig.setUseCompoundFile(boolean useCompoundFile)を通じて設定することができる。デフォルトバリューはtrueである。

CommitOnClose

CommitOnCloseはブーリアンである。バリューはtrueだと、まずは全部の変更を応用し、即ちcommit操作を実行する。falseだと、ラストcommitした内容を保存しない。
CommitOnCloseはIndexWriterConfig.setCommitOnClose(boolean commitOnClose)を通じて設定することができる。デフォルトバリューはtrueである。

CheckPendingFlushUpdate

CheckPendingFlushUpdateはブーリアンである。バリューはtrueだと、スレッドはファイルのアッドやアップデートを実行した後、DWPTをflushすることになる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?