Lucene.Net  3.0.3
Lucene.Net is a port of the Lucene search engine library, written in C# and targeted at .NET runtime users.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Pages
Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | Properties | List of all members
Lucene.Net.Index.LogMergePolicy Class Referenceabstract

This class implements a MergePolicy that tries to merge segments into levels of exponentially increasing size, where each level has fewer segments than the value of the merge factor. Whenever extra segments (beyond the merge factor upper bound) are encountered, all segments within the level are merged. You can get or set the merge factor using MergeFactor and MergeFactor respectively. More...

Inherits Lucene.Net.Index.MergePolicy.

Inherited by Lucene.Net.Index.LogByteSizeMergePolicy, and Lucene.Net.Index.LogDocMergePolicy.

Public Member Functions

override bool UseCompoundFile (SegmentInfos infos, SegmentInfo info)
 Returns true if a newly flushed (not from merge) segment should use the compound file format.
 
virtual void SetUseCompoundFile (bool useCompoundFile)
 Gets or sets whether compound file format should be used for newly flushed and newly merged segments.
 
virtual bool GetUseCompoundFile ()
 
override bool UseCompoundDocStore (SegmentInfos infos)
 Returns true if the doc store files should use the compound file format.
 
virtual void SetUseCompoundDocStore (bool useCompoundDocStore)
 Sets whether compound file format should be used for newly flushed and newly merged doc store segment files (term vectors and stored fields).
 
virtual bool GetUseCompoundDocStore ()
 Returns true if newly flushed and newly merge doc store segment files (term vectors and stored fields)
 
override MergeSpecification FindMergesForOptimize (SegmentInfos infos, int maxNumSegments, ISet< SegmentInfo > segmentsToOptimize)
 Returns the merges necessary to optimize the index. This merge policy defines "optimized" to mean only one segment in the index, where that segment has no deletions pending nor separate norms, and it is in compound file format if the current useCompoundFile setting is true. This method returns multiple merges (mergeFactor at a time) so the MergeScheduler in use may make use of concurrency.
 
override MergeSpecification FindMergesToExpungeDeletes (SegmentInfos segmentInfos)
 Finds merges necessary to expunge all deletes from the index. We simply merge adjacent segments that have deletes, up to mergeFactor at a time.
 
override MergeSpecification FindMerges (SegmentInfos infos)
 Checks if any merges are now necessary and returns a MergePolicy.MergeSpecification if so. A merge is necessary when there are more than MergeFactor segments at a given level. When multiple levels have too many segments, this method will return multiple merges, allowing the MergeScheduler to use concurrency.
 
- Public Member Functions inherited from Lucene.Net.Index.MergePolicy
void Close ()
 Release all resources for the policy.
 
void Dispose ()
 Release all resources for the policy.
 

Public Attributes

const double LEVEL_LOG_SPAN = 0.75
 Defines the allowed range of log(size) for each level. A level is computed by taking the max segment log size, minus LEVEL_LOG_SPAN, and finding all segments falling within that range.
 
const int DEFAULT_MERGE_FACTOR = 10
 Default merge factor, which is how many segments are merged at a time
 

Static Public Attributes

static readonly int DEFAULT_MAX_MERGE_DOCS = System.Int32.MaxValue
 Default maximum segment size. A segment of this size
 
static double DEFAULT_NO_CFS_RATIO = 0.1
 Default noCFSRatio. If a merge's size is >= 10% of the index, then we disable compound file for it. See NoCFSRatio
 

Protected Member Functions

 LogMergePolicy (IndexWriter writer)
 
OneMerge MakeOneMerge (SegmentInfos infos, SegmentInfos infosToMerge)
 
- Protected Member Functions inherited from Lucene.Net.Index.MergePolicy
 MergePolicy (IndexWriter writer)
 
abstract void Dispose (bool disposing)
 

Protected Attributes

double internalNoCFSRatio = DEFAULT_NO_CFS_RATIO
 

Properties

double NoCFSRatio [get, set]
 
virtual int MergeFactor [get, set]
 Gets or sets how often segment indices are merged by addDocument(). With smaller values, less RAM is used while indexing, and searches on unoptimized indices are faster, but indexing speed is slower. With larger values, more RAM is used during indexing, and while searches on unoptimized indices are slower, indexing is faster. Thus larger values (> 10) are best for batch index creation, and smaller values (< 10) for indices that are interactively maintained.
 
virtual bool CalibrateSizeByDeletes [get, set]
 Gets or sets whether the segment size should be calibrated by the number of deletes when choosing segments for merge.
 
virtual int MaxMergeDocs [get, set]
 Gets or sets the largest segment (measured by document count) that may be merged with other segments. Determines the largest segment (measured by document count) that may be merged with other segments. Small values (e.g., less than 10,000) are best for interactive indexing, as this limits the length of pauses while indexing to a few seconds. Larger values are best for batched indexing and speedier searches.
 

Detailed Description

This class implements a MergePolicy that tries to merge segments into levels of exponentially increasing size, where each level has fewer segments than the value of the merge factor. Whenever extra segments (beyond the merge factor upper bound) are encountered, all segments within the level are merged. You can get or set the merge factor using MergeFactor and MergeFactor respectively.

This class is abstract and requires a subclass to define the Size method which specifies how a segment's size is determined. LogDocMergePolicy is one subclass that measures size by document count in the segment. LogByteSizeMergePolicy is another subclass that measures size as the total byte size of the file(s) for the segment.

Definition at line 42 of file LogMergePolicy.cs.

Constructor & Destructor Documentation

Lucene.Net.Index.LogMergePolicy.LogMergePolicy ( IndexWriter  writer)
protected

Definition at line 82 of file LogMergePolicy.cs.

Member Function Documentation

override MergeSpecification Lucene.Net.Index.LogMergePolicy.FindMerges ( SegmentInfos  infos)
virtual

Checks if any merges are now necessary and returns a MergePolicy.MergeSpecification if so. A merge is necessary when there are more than MergeFactor segments at a given level. When multiple levels have too many segments, this method will return multiple merges, allowing the MergeScheduler to use concurrency.

Implements Lucene.Net.Index.MergePolicy.

Definition at line 413 of file LogMergePolicy.cs.

override MergeSpecification Lucene.Net.Index.LogMergePolicy.FindMergesForOptimize ( SegmentInfos  infos,
int  maxNumSegments,
ISet< SegmentInfo segmentsToOptimize 
)
virtual

Returns the merges necessary to optimize the index. This merge policy defines "optimized" to mean only one segment in the index, where that segment has no deletions pending nor separate norms, and it is in compound file format if the current useCompoundFile setting is true. This method returns multiple merges (mergeFactor at a time) so the MergeScheduler in use may make use of concurrency.

Implements Lucene.Net.Index.MergePolicy.

Definition at line 259 of file LogMergePolicy.cs.

override MergeSpecification Lucene.Net.Index.LogMergePolicy.FindMergesToExpungeDeletes ( SegmentInfos  segmentInfos)
virtual

Finds merges necessary to expunge all deletes from the index. We simply merge adjacent segments that have deletes, up to mergeFactor at a time.

Implements Lucene.Net.Index.MergePolicy.

Definition at line 354 of file LogMergePolicy.cs.

virtual bool Lucene.Net.Index.LogMergePolicy.GetUseCompoundDocStore ( )
virtual

Returns true if newly flushed and newly merge doc store segment files (term vectors and stored fields)

See Also
SetUseCompoundDocStore

Definition at line 177 of file LogMergePolicy.cs.

virtual bool Lucene.Net.Index.LogMergePolicy.GetUseCompoundFile ( )
virtual

Definition at line 151 of file LogMergePolicy.cs.

OneMerge Lucene.Net.Index.LogMergePolicy.MakeOneMerge ( SegmentInfos  infos,
SegmentInfos  infosToMerge 
)
protected

Definition at line 526 of file LogMergePolicy.cs.

virtual void Lucene.Net.Index.LogMergePolicy.SetUseCompoundDocStore ( bool  useCompoundDocStore)
virtual

Sets whether compound file format should be used for newly flushed and newly merged doc store segment files (term vectors and stored fields).

Definition at line 166 of file LogMergePolicy.cs.

virtual void Lucene.Net.Index.LogMergePolicy.SetUseCompoundFile ( bool  useCompoundFile)
virtual

Gets or sets whether compound file format should be used for newly flushed and newly merged segments.

Definition at line 145 of file LogMergePolicy.cs.

override bool Lucene.Net.Index.LogMergePolicy.UseCompoundDocStore ( SegmentInfos  segments)
virtual

Returns true if the doc store files should use the compound file format.

Implements Lucene.Net.Index.MergePolicy.

Definition at line 157 of file LogMergePolicy.cs.

override bool Lucene.Net.Index.LogMergePolicy.UseCompoundFile ( SegmentInfos  segments,
SegmentInfo  newSegment 
)
virtual

Returns true if a newly flushed (not from merge) segment should use the compound file format.

Implements Lucene.Net.Index.MergePolicy.

Definition at line 137 of file LogMergePolicy.cs.

Member Data Documentation

readonly int Lucene.Net.Index.LogMergePolicy.DEFAULT_MAX_MERGE_DOCS = System.Int32.MaxValue
static

Default maximum segment size. A segment of this size

See Also
MaxMergeDocs

Definition at line 60 of file LogMergePolicy.cs.

const int Lucene.Net.Index.LogMergePolicy.DEFAULT_MERGE_FACTOR = 10

Default merge factor, which is how many segments are merged at a time

Definition at line 55 of file LogMergePolicy.cs.

double Lucene.Net.Index.LogMergePolicy.DEFAULT_NO_CFS_RATIO = 0.1
static

Default noCFSRatio. If a merge's size is >= 10% of the index, then we disable compound file for it. See NoCFSRatio

Definition at line 66 of file LogMergePolicy.cs.

double Lucene.Net.Index.LogMergePolicy.internalNoCFSRatio = DEFAULT_NO_CFS_RATIO
protected

Definition at line 74 of file LogMergePolicy.cs.

const double Lucene.Net.Index.LogMergePolicy.LEVEL_LOG_SPAN = 0.75

Defines the allowed range of log(size) for each level. A level is computed by taking the max segment log size, minus LEVEL_LOG_SPAN, and finding all segments falling within that range.

Definition at line 50 of file LogMergePolicy.cs.

Property Documentation

virtual bool Lucene.Net.Index.LogMergePolicy.CalibrateSizeByDeletes
getset

Gets or sets whether the segment size should be calibrated by the number of deletes when choosing segments for merge.

Definition at line 186 of file LogMergePolicy.cs.

virtual int Lucene.Net.Index.LogMergePolicy.MaxMergeDocs
getset

Gets or sets the largest segment (measured by document count) that may be merged with other segments. Determines the largest segment (measured by document count) that may be merged with other segments. Small values (e.g., less than 10,000) are best for interactive indexing, as this limits the length of pauses while indexing to a few seconds. Larger values are best for batched indexing and speedier searches.

The default value is int.MaxValue.

The default merge policy (LogByteSizeMergePolicy) also allows you to set this limit by net size (in MB) of the segment, using LogByteSizeMergePolicy.MaxMergeMB.

Definition at line 575 of file LogMergePolicy.cs.

virtual int Lucene.Net.Index.LogMergePolicy.MergeFactor
getset

Gets or sets how often segment indices are merged by addDocument(). With smaller values, less RAM is used while indexing, and searches on unoptimized indices are faster, but indexing speed is slower. With larger values, more RAM is used during indexing, and while searches on unoptimized indices are slower, indexing is faster. Thus larger values (> 10) are best for batch index creation, and smaller values (< 10) for indices that are interactively maintained.

Definition at line 127 of file LogMergePolicy.cs.

double Lucene.Net.Index.LogMergePolicy.NoCFSRatio
getset

Definition at line 92 of file LogMergePolicy.cs.


The documentation for this class was generated from the following file: