org.apache.lucene.index

## Class SortingMergePolicy

- java.lang.Object
- - org.apache.lucene.index.MergePolicy
  - - org.apache.lucene.index.MergePolicyWrapper
    - - org.apache.lucene.index.SortingMergePolicy

-     public final class SortingMergePolicy
      extends MergePolicyWrapper

  A `MergePolicy` that reorders documents according to a `Sort` before merging them. As a consequence, all segments resulting from a merge will be sorted while segments resulting from a flush will be in the order in which documents have been added.

  NOTE: Never use this policy if you rely on `IndexWriter.addDocuments` to have sequentially-assigned doc IDs, this policy will scatter doc IDs.

  NOTE: This policy should only be used with idempotent `Sort`s so that the order of segments is predictable. For example, using `Sort.INDEXORDER` in reverse (which is not idempotent) will make the order of documents in a segment depend on the number of times the segment has been merged.

  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.lucene.index.MergePolicy

      `MergePolicy.DocMap, MergePolicy.MergeAbortedException, MergePolicy.MergeException, MergePolicy.MergeSpecification, MergePolicy.OneMerge`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `SORTER_ID_PROP` Put in the `diagnostics` to denote that this segment is sorted.

    - ### Fields inherited from class org.apache.lucene.index.MergePolicyWrapper

      `in`

    - ### Fields inherited from class org.apache.lucene.index.MergePolicy

      `DEFAULT_MAX_CFS_SEGMENT_SIZE, DEFAULT_NO_CFS_RATIO, maxCFSSegmentSize, noCFSRatio`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SortingMergePolicy(MergePolicy in, Sort sort)` Create a new `MergePolicy` that sorts documents with the given `sort`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `MergePolicy.MergeSpecification` | `findForcedDeletesMerges(SegmentInfos segmentInfos, IndexWriter writer)`
    `MergePolicy.MergeSpecification` | `findForcedMerges(SegmentInfos segmentInfos, int maxSegmentCount, Map<SegmentCommitInfo,Boolean> segmentsToMerge, IndexWriter writer)`
    `MergePolicy.MergeSpecification` | `findMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, IndexWriter writer)`
    `Sort` | `getSort()` Return the `Sort` order that is used to sort segments when merging.
    `static boolean` | `isSorted(LeafReader reader, Sort sort)` Returns `true` if the given `reader` is sorted by the `sort` given.
    `String` | `toString()`

    - ### Methods inherited from class org.apache.lucene.index.MergePolicyWrapper

      `getNoCFSRatio, setMaxCFSSegmentSizeMB, setNoCFSRatio, size, useCompoundFile`

    - ### Methods inherited from class org.apache.lucene.index.MergePolicy

      `getMaxCFSSegmentSizeMB, isMerged`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### SORTER_ID_PROP

          public static final String SORTER_ID_PROP

      Put in the `diagnostics` to denote that this segment is sorted.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### SortingMergePolicy

          public SortingMergePolicy(MergePolicy in,
                            Sort sort)

      Create a new `MergePolicy` that sorts documents with the given `sort`.

  - ### Method Detail

    - #### isSorted

          public static boolean isSorted(LeafReader reader,
                         Sort sort)

      Returns `true` if the given `reader` is sorted by the `sort` given. Typically the given `sort` would be the `getSort()` order of a `SortingMergePolicy`.

    - #### getSort

          public Sort getSort()

      Return the `Sort` order that is used to sort segments when merging.

    - #### findMerges

          public MergePolicy.MergeSpecification findMerges(MergeTrigger mergeTrigger,
                                                  SegmentInfos segmentInfos,
                                                  IndexWriter writer)
                                                    throws IOException

      Overrides:
        `findMerges` in class `MergePolicyWrapper`
      Throws:
        `IOException`

    - #### findForcedMerges

          public MergePolicy.MergeSpecification findForcedMerges(SegmentInfos segmentInfos,
                                                        int maxSegmentCount,
                                                        Map<SegmentCommitInfo,Boolean> segmentsToMerge,
                                                        IndexWriter writer)
                                                          throws IOException

      Overrides:
        `findForcedMerges` in class `MergePolicyWrapper`
      Throws:
        `IOException`

    - #### findForcedDeletesMerges

          public MergePolicy.MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos,
                                                               IndexWriter writer)
                                                                 throws IOException

      Overrides:
        `findForcedDeletesMerges` in class `MergePolicyWrapper`
      Throws:
        `IOException`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `MergePolicyWrapper`

Copyright © 2000-2017 Apache Software Foundation. All Rights Reserved.