Show / Hide Table of Contents

    Class LogMergePolicy

    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.

    This class is abstract and requires a subclass to define the Size(SegmentCommitInfo) 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.

    Inheritance
    System.Object
    MergePolicy
    LogMergePolicy
    LogByteSizeMergePolicy
    LogDocMergePolicy
    Inherited Members
    MergePolicy.DEFAULT_MAX_CFS_SEGMENT_SIZE
    MergePolicy.m_writer
    MergePolicy.m_noCFSRatio
    MergePolicy.m_maxCFSSegmentSize
    MergePolicy.Clone()
    MergePolicy.SetIndexWriter(IndexWriter)
    MergePolicy.Dispose()
    MergePolicy.UseCompoundFile(SegmentInfos, SegmentCommitInfo)
    MergePolicy.Size(SegmentCommitInfo)
    MergePolicy.IsMerged(SegmentInfos, SegmentCommitInfo)
    MergePolicy.NoCFSRatio
    MergePolicy.MaxCFSSegmentSizeMB
    Namespace: Lucene.Net.Index
    Assembly: Lucene.Net.dll
    Syntax
    public abstract class LogMergePolicy : MergePolicy

    Constructors

    | Improve this Doc View Source

    LogMergePolicy()

    Sole constructor. (For invocation by subclass constructors, typically implicit.)

    Declaration
    public LogMergePolicy()

    Fields

    | Improve this Doc View Source

    DEFAULT_MAX_MERGE_DOCS

    Default maximum segment size. A segment of this size or larger will never be merged.

    Declaration
    public static readonly int DEFAULT_MAX_MERGE_DOCS
    Field Value
    Type Description
    System.Int32
    See Also
    MaxMergeDocs
    | Improve this Doc View Source

    DEFAULT_MERGE_FACTOR

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

    Declaration
    public static readonly int DEFAULT_MERGE_FACTOR
    Field Value
    Type Description
    System.Int32
    | Improve this Doc View Source

    DEFAULT_NO_CFS_RATIO

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

    Declaration
    public static readonly double DEFAULT_NO_CFS_RATIO
    Field Value
    Type Description
    System.Double
    See Also
    NoCFSRatio
    | Improve this Doc View Source

    LEVEL_LOG_SPAN

    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.

    Declaration
    public static readonly double LEVEL_LOG_SPAN
    Field Value
    Type Description
    System.Double
    | Improve this Doc View Source

    m_calibrateSizeByDeletes

    If true, we pro-rate a segment's size by the percentage of non-deleted documents.

    Declaration
    protected bool m_calibrateSizeByDeletes
    Field Value
    Type Description
    System.Boolean
    | Improve this Doc View Source

    m_maxMergeDocs

    If a segment has more than this many documents then it will never be merged.

    Declaration
    protected int m_maxMergeDocs
    Field Value
    Type Description
    System.Int32
    | Improve this Doc View Source

    m_maxMergeSize

    If the size of a segment exceeds this value then it will never be merged.

    Declaration
    protected long m_maxMergeSize
    Field Value
    Type Description
    System.Int64
    | Improve this Doc View Source

    m_maxMergeSizeForForcedMerge

    If the size of a segment exceeds this value then it will never be merged during ForceMerge(Int32).

    Declaration
    protected long m_maxMergeSizeForForcedMerge
    Field Value
    Type Description
    System.Int64
    | Improve this Doc View Source

    m_mergeFactor

    How many segments to merge at a time.

    Declaration
    protected int m_mergeFactor
    Field Value
    Type Description
    System.Int32
    | Improve this Doc View Source

    m_minMergeSize

    Any segments whose size is smaller than this value will be rounded up to this value. This ensures that tiny segments are aggressively merged.

    Declaration
    protected long m_minMergeSize
    Field Value
    Type Description
    System.Int64

    Properties

    | Improve this Doc View Source

    CalibrateSizeByDeletes

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

    Declaration
    public virtual bool CalibrateSizeByDeletes { get; set; }
    Property Value
    Type Description
    System.Boolean
    | Improve this Doc View Source

    IsVerbose

    Returns true if LogMergePolicy is enabled in Lucene.Net.Index.IndexWriter.infoStream.

    Declaration
    protected virtual bool IsVerbose { get; }
    Property Value
    Type Description
    System.Boolean
    | Improve this Doc View Source

    MaxMergeDocs

    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 .

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

    Declaration
    public virtual int MaxMergeDocs { get; set; }
    Property Value
    Type Description
    System.Int32
    | Improve this Doc View Source

    MergeFactor

    Gets or Sets the number of segments that are merged at once and also controls the total number of segments allowed to accumulate in the index.

    This determines how often segment indices are merged by AddDocument(IEnumerable<IIndexableField>). With smaller values, less RAM is used while indexing, and searches are faster, but indexing speed is slower. With larger values, more RAM is used during indexing, and while searches is slower, indexing is faster. Thus larger values (> 10) are best for batch index creation, and smaller values (< 10) for indices that are interactively maintained.

    Declaration
    public virtual int MergeFactor { get; set; }
    Property Value
    Type Description
    System.Int32

    Methods

    | Improve this Doc View Source

    Dispose(Boolean)

    Declaration
    protected override void Dispose(bool disposing)
    Parameters
    Type Name Description
    System.Boolean disposing
    Overrides
    MergePolicy.Dispose(Boolean)
    | Improve this Doc View Source

    FindForcedDeletesMerges(SegmentInfos)

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

    Declaration
    public override MergePolicy.MergeSpecification FindForcedDeletesMerges(SegmentInfos segmentInfos)
    Parameters
    Type Name Description
    SegmentInfos segmentInfos
    Returns
    Type Description
    MergePolicy.MergeSpecification
    Overrides
    MergePolicy.FindForcedDeletesMerges(SegmentInfos)
    | Improve this Doc View Source

    FindForcedMerges(SegmentInfos, Int32, IDictionary<SegmentCommitInfo, Nullable<Boolean>>)

    Returns the merges necessary to merge the index down to a specified number of segments. this respects the m_maxMergeSizeForForcedMerge setting. By default, and assuming maxNumSegments=1, only one segment will be left 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.

    Declaration
    public override MergePolicy.MergeSpecification FindForcedMerges(SegmentInfos infos, int maxNumSegments, IDictionary<SegmentCommitInfo, bool?> segmentsToMerge)
    Parameters
    Type Name Description
    SegmentInfos infos
    System.Int32 maxNumSegments
    IDictionary<SegmentCommitInfo, System.Nullable<System.Boolean>> segmentsToMerge
    Returns
    Type Description
    MergePolicy.MergeSpecification
    Overrides
    MergePolicy.FindForcedMerges(SegmentInfos, Int32, IDictionary<SegmentCommitInfo, Nullable<Boolean>>)
    | Improve this Doc View Source

    FindMerges(MergeTrigger, SegmentInfos)

    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.

    Declaration
    public override MergePolicy.MergeSpecification FindMerges(MergeTrigger mergeTrigger, SegmentInfos infos)
    Parameters
    Type Name Description
    MergeTrigger mergeTrigger
    SegmentInfos infos
    Returns
    Type Description
    MergePolicy.MergeSpecification
    Overrides
    MergePolicy.FindMerges(MergeTrigger, SegmentInfos)
    | Improve this Doc View Source

    IsMerged(SegmentInfos, Int32, IDictionary<SegmentCommitInfo, Nullable<Boolean>>)

    Returns true if the number of segments eligible for merging is less than or equal to the specified maxNumSegments.

    Declaration
    protected virtual bool IsMerged(SegmentInfos infos, int maxNumSegments, IDictionary<SegmentCommitInfo, bool?> segmentsToMerge)
    Parameters
    Type Name Description
    SegmentInfos infos
    System.Int32 maxNumSegments
    IDictionary<SegmentCommitInfo, System.Nullable<System.Boolean>> segmentsToMerge
    Returns
    Type Description
    System.Boolean
    | Improve this Doc View Source

    Message(String)

    Print a debug message to Lucene.Net.Index.IndexWriter.infoStream.

    Declaration
    protected virtual void Message(string message)
    Parameters
    Type Name Description
    System.String message
    | Improve this Doc View Source

    SizeBytes(SegmentCommitInfo)

    Return the byte size of the provided SegmentCommitInfo, pro-rated by percentage of non-deleted documents if CalibrateSizeByDeletes is set.

    Declaration
    protected virtual long SizeBytes(SegmentCommitInfo info)
    Parameters
    Type Name Description
    SegmentCommitInfo info
    Returns
    Type Description
    System.Int64
    | Improve this Doc View Source

    SizeDocs(SegmentCommitInfo)

    Return the number of documents in the provided SegmentCommitInfo, pro-rated by percentage of non-deleted documents if CalibrateSizeByDeletes is set.

    Declaration
    protected virtual long SizeDocs(SegmentCommitInfo info)
    Parameters
    Type Name Description
    SegmentCommitInfo info
    Returns
    Type Description
    System.Int64
    | Improve this Doc View Source

    ToString()

    Declaration
    public override string ToString()
    Returns
    Type Description
    System.String
    • Improve this Doc
    • View Source
    Back to top Copyright © 2020 Licensed to the Apache Software Foundation (ASF)