Class BalancedSegmentMergePolicy

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    @Deprecated
    public class BalancedSegmentMergePolicy
    extends LogByteSizeMergePolicy
    Deprecated.
    This class is removed in 4.0; use TieredMergePolicy instead.
    Merge policy that tries to balance not doing large segment merges with not accumulating too many segments in the index, to provide for better performance in near real-time setting.

    This is based on code from zoie, described in more detail at http://code.google.com/p/zoie/wiki/ZoieMergePolicy.

    WARNING: there is a known bug in this merge policy that causes it to run forever, merging the same single segment over and over. If you use SerialMergeScheduler this can cause an index thread to hang forever merging. See LUCENE-4269 for details.

    • Field Detail

      • DEFAULT_NUM_LARGE_SEGMENTS

        public static final int DEFAULT_NUM_LARGE_SEGMENTS
        Deprecated.
        See Also:
        Constant Field Values
    • Constructor Detail

      • BalancedSegmentMergePolicy

        public BalancedSegmentMergePolicy()
        Deprecated.
    • Method Detail

      • setPartialExpunge

        public void setPartialExpunge​(boolean doPartialExpunge)
        Deprecated.
      • getPartialExpunge

        public boolean getPartialExpunge()
        Deprecated.
      • setNumLargeSegments

        public void setNumLargeSegments​(int numLargeSegments)
        Deprecated.
      • getNumLargeSegments

        public int getNumLargeSegments()
        Deprecated.
      • setMaxSmallSegments

        public void setMaxSmallSegments​(int maxSmallSegments)
        Deprecated.
      • getMaxSmallSegments

        public int getMaxSmallSegments()
        Deprecated.
      • setMergeFactor

        public void setMergeFactor​(int mergeFactor)
        Deprecated.
        Description copied from class: LogMergePolicy
        Determines how often segment indices are merged by addDocument(). 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.
        Overrides:
        setMergeFactor in class LogMergePolicy
      • findForcedMerges

        public MergePolicy.MergeSpecification findForcedMerges​(SegmentInfos infos,
                                                               int maxNumSegments,
                                                               Map<SegmentInfo,​Boolean> segmentsToMerge)
                                                        throws IOException
        Deprecated.
        Description copied from class: LogMergePolicy
        Returns the merges necessary to merge the index down to a specified number of segments. This respects the LogMergePolicy.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.
        Overrides:
        findForcedMerges in class LogMergePolicy
        Parameters:
        infos - the total set of segments in the index
        maxNumSegments - requested maximum number of segments in the index (currently this is always 1)
        segmentsToMerge - contains the specific SegmentInfo instances that must be merged away. This may be a subset of all SegmentInfos. If the value is True for a given SegmentInfo, that means this segment was an original segment present in the to-be-merged index; else, it was a segment produced by a cascaded merge.
        Throws:
        IOException