Class SegmentInfos

  • All Implemented Interfaces:
    Cloneable, Iterable<SegmentInfo>

    public final class SegmentInfos
    extends Object
    implements Cloneable, Iterable<SegmentInfo>
    A collection of segmentInfo objects with methods for operating on those segments in relation to the file system.
    WARNING: This API is experimental and might change in incompatible ways in the next release.
    • Field Detail

      • FORMAT

        public static final int FORMAT
        The file format version, a negative number.
        See Also:
        Constant Field Values
      • FORMAT_LOCKLESS

        public static final int FORMAT_LOCKLESS
        This format adds details used for lockless commits. It differs slightly from the previous format in that file names are never re-used (write once). Instead, each file is written to the next generation. For example, segments_1, segments_2, etc. This allows us to not use a commit lock. See file formats for details.
        See Also:
        Constant Field Values
      • FORMAT_SINGLE_NORM_FILE

        public static final int FORMAT_SINGLE_NORM_FILE
        This format adds a "hasSingleNormFile" flag into each segment info. See LUCENE-756 for details.
        See Also:
        Constant Field Values
      • FORMAT_SHARED_DOC_STORE

        public static final int FORMAT_SHARED_DOC_STORE
        This format allows multiple segments to share a single vectors and stored fields file.
        See Also:
        Constant Field Values
      • FORMAT_CHECKSUM

        public static final int FORMAT_CHECKSUM
        This format adds a checksum at the end of the file to ensure all bytes were successfully written.
        See Also:
        Constant Field Values
      • FORMAT_DEL_COUNT

        public static final int FORMAT_DEL_COUNT
        This format adds the deletion count for each segment. This way IndexWriter can efficiently report numDocs().
        See Also:
        Constant Field Values
      • FORMAT_HAS_PROX

        public static final int FORMAT_HAS_PROX
        This format adds the boolean hasProx to record if any fields in the segment store prox information (ie, have omitTermFreqAndPositions==false)
        See Also:
        Constant Field Values
      • FORMAT_USER_DATA

        public static final int FORMAT_USER_DATA
        This format adds optional commit userData (String) storage.
        See Also:
        Constant Field Values
      • FORMAT_DIAGNOSTICS

        public static final int FORMAT_DIAGNOSTICS
        This format adds optional per-segment String diagnostics storage, and switches userData to Map
        See Also:
        Constant Field Values
      • FORMAT_HAS_VECTORS

        public static final int FORMAT_HAS_VECTORS
        Each segment records whether it has term vectors
        See Also:
        Constant Field Values
      • FORMAT_3_1

        public static final int FORMAT_3_1
        Each segment records the Lucene version that created it.
        See Also:
        Constant Field Values
      • counter

        public int counter
    • Constructor Detail

      • SegmentInfos

        public SegmentInfos()
    • Method Detail

      • setFormat

        public void setFormat​(int format)
      • getFormat

        public int getFormat()
      • getLastCommitGeneration

        public static long getLastCommitGeneration​(String[] files)
        Get the generation of the most recent commit to the list of index files (N in the segments_N file).
        Parameters:
        files - -- array of file names to check
      • getLastCommitGeneration

        public static long getLastCommitGeneration​(Directory directory)
                                            throws IOException
        Get the generation of the most recent commit to the index in this directory (N in the segments_N file).
        Parameters:
        directory - -- directory to search for the latest segments_N file
        Throws:
        IOException
      • getLastCommitSegmentsFileName

        public static String getLastCommitSegmentsFileName​(String[] files)
                                                    throws IOException
        Get the filename of the segments_N file for the most recent commit in the list of index files.
        Parameters:
        files - -- array of file names to check
        Throws:
        IOException
      • getLastCommitSegmentsFileName

        public static String getLastCommitSegmentsFileName​(Directory directory)
                                                    throws IOException
        Get the filename of the segments_N file for the most recent commit to the index in this Directory.
        Parameters:
        directory - -- directory to search for the latest segments_N file
        Throws:
        IOException
      • getSegmentsFileName

        public String getSegmentsFileName()
        Get the segments_N filename in use by this segment infos.
      • generationFromSegmentsFileName

        public static long generationFromSegmentsFileName​(String fileName)
        Parse the generation off the segments file name and return it.
      • getNextSegmentFileName

        public String getNextSegmentFileName()
        Get the next segments_N filename that will be written.
      • read

        public final void read​(Directory directory,
                               String segmentFileName)
                        throws CorruptIndexException,
                               IOException
        Read a particular segmentFileName. Note that this may throw an IOException if a commit is in process.
        Parameters:
        directory - -- directory containing the segments file
        segmentFileName - -- segment file to load
        Throws:
        CorruptIndexException - if the index is corrupt
        IOException - if there is a low-level IO error
      • pruneDeletedSegments

        public void pruneDeletedSegments()
                                  throws IOException
        Prunes any segment whose docs are all deleted.
        Throws:
        IOException
      • clone

        public Object clone()
        Returns a copy of this instance, also copying each SegmentInfo.
        Overrides:
        clone in class Object
      • getVersion

        public long getVersion()
        version number when this SegmentInfos was generated.
      • getGeneration

        public long getGeneration()
      • getLastGeneration

        public long getLastGeneration()
      • setInfoStream

        public static void setInfoStream​(PrintStream infoStream)
        If non-null, information about retries when loading the segments file will be printed to this.
      • setDefaultGenLookaheadCount

        public static void setDefaultGenLookaheadCount​(int count)
        Advanced: set how many times to try incrementing the gen when loading the segments file. This only runs if the primary (listing directory) and secondary (opening segments.gen file) methods fail to find the segments file.
        WARNING: This API is experimental and might change in incompatible ways in the next release.
      • getDefaultGenLookahedCount

        public static int getDefaultGenLookahedCount()
        See Also:
        setDefaultGenLookaheadCount(int)
        WARNING: This API is experimental and might change in incompatible ways in the next release.
      • range

        @Deprecated
        public SegmentInfos range​(int first,
                                  int last)
        Deprecated.
        use asList().subList(first, last) instead.
        Returns a new SegmentInfos containing the SegmentInfo instances in the specified range first (inclusive) to last (exclusive), so total number of segments returned is last-first.
      • files

        public Collection<String> files​(Directory dir,
                                        boolean includeSegmentsFile)
                                 throws IOException
        Returns all file names referenced by SegmentInfo instances matching the provided Directory (ie files associated with any "external" segments are skipped). The returned collection is recomputed on each invocation.
        Throws:
        IOException
      • totalDocCount

        public int totalDocCount()
        Returns sum of all segment's docCounts. Note that this does not include deletions
      • changed

        public void changed()
        Call this before committing if changes have been made to the segments.
      • asList

        public List<SegmentInfo> asList()
        Returns all contained segments as an unmodifiable List view.
      • asSet

        public Set<SegmentInfo> asSet()
        Returns all contained segments as an unmodifiable Set view. The iterator is not sorted, use List view or iterator() to get all segments in order.
      • size

        public int size()
      • clear

        public void clear()
      • remove

        public void remove​(int index)
      • contains

        public boolean contains​(SegmentInfo si)