Package org.apache.lucene.index
Class SegmentInfos
- java.lang.Object
-
- org.apache.lucene.index.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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SegmentInfos.FindSegmentsFile
Utility class for executing code that needs to do something with the current segments file.
-
Field Summary
Fields Modifier and Type Field Description int
counter
static int
CURRENT_FORMAT
static int
FORMAT
The file format version, a negative number.static int
FORMAT_3_1
Each segment records the Lucene version that created it.static int
FORMAT_CHECKSUM
This format adds a checksum at the end of the file to ensure all bytes were successfully written.static int
FORMAT_DEL_COUNT
This format adds the deletion count for each segment.static int
FORMAT_DIAGNOSTICS
This format adds optional per-segment String diagnostics storage, and switches userData to Mapstatic 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)static int
FORMAT_HAS_VECTORS
Each segment records whether it has term vectorsstatic int
FORMAT_LOCKLESS
This format adds details used for lockless commits.static int
FORMAT_MAXIMUM
static int
FORMAT_MINIMUM
static int
FORMAT_SHARED_DOC_STORE
This format allows multiple segments to share a single vectors and stored fields file.static int
FORMAT_SINGLE_NORM_FILE
This format adds a "hasSingleNormFile" flag into each segment info.static int
FORMAT_USER_DATA
This format adds optional commit userData (String) storage.
-
Constructor Summary
Constructors Constructor Description SegmentInfos()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
add(SegmentInfo si)
void
addAll(Iterable<SegmentInfo> sis)
List<SegmentInfo>
asList()
Returns all contained segments as an unmodifiableList
view.Set<SegmentInfo>
asSet()
Returns all contained segments as an unmodifiableSet
view.void
changed()
Call this before committing if changes have been made to the segments.void
clear()
Object
clone()
Returns a copy of this instance, also copying each SegmentInfo.boolean
contains(SegmentInfo si)
Collection<String>
files(Directory dir, boolean includeSegmentsFile)
Returns all file names referenced by SegmentInfo instances matching the provided Directory (ie files associated with any "external" segments are skipped).static long
generationFromSegmentsFileName(String fileName)
Parse the generation off the segments file name and return it.static int
getDefaultGenLookahedCount()
int
getFormat()
long
getGeneration()
static PrintStream
getInfoStream()
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).static long
getLastCommitGeneration(Directory directory)
Get the generation of the most recent commit to the index in this directory (N in the segments_N file).static String
getLastCommitSegmentsFileName(String[] files)
Get the filename of the segments_N file for the most recent commit in the list of index files.static String
getLastCommitSegmentsFileName(Directory directory)
Get the filename of the segments_N file for the most recent commit to the index in this Directory.long
getLastGeneration()
String
getNextSegmentFileName()
Get the next segments_N filename that will be written.String
getSegmentsFileName()
Get the segments_N filename in use by this segment infos.Map<String,String>
getUserData()
long
getVersion()
version number when this SegmentInfos was generated.int
indexOf(SegmentInfo si)
SegmentInfo
info(int i)
Iterator<SegmentInfo>
iterator()
Returns an unmodifiableIterator
of contained segments in order.void
pruneDeletedSegments()
Prunes any segment whose docs are all deleted.SegmentInfos
range(int first, int last)
Deprecated.useasList().subList(first, last)
instead.void
read(Directory directory)
This version of read uses the retry logic (for lock-less commits) to find the right segments file to load.void
read(Directory directory, String segmentFileName)
Read a particular segmentFileName.static long
readCurrentVersion(Directory directory)
Deprecated.Load the SegmentInfos and then callgetVersion()
.void
remove(int index)
void
remove(SegmentInfo si)
static void
setDefaultGenLookaheadCount(int count)
Advanced: set how many times to try incrementing the gen when loading the segments file.void
setFormat(int format)
static void
setInfoStream(PrintStream infoStream)
If non-null, information about retries when loading the segments file will be printed to this.int
size()
String
toString(Directory directory)
int
totalDocCount()
Returns sum of all segment's docCounts.-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
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
-
CURRENT_FORMAT
public static final int CURRENT_FORMAT
- See Also:
- Constant Field Values
-
FORMAT_MINIMUM
public static final int FORMAT_MINIMUM
- See Also:
- Constant Field Values
-
FORMAT_MAXIMUM
public static final int FORMAT_MAXIMUM
- See Also:
- Constant Field Values
-
counter
public int counter
-
-
Method Detail
-
setFormat
public void setFormat(int format)
-
getFormat
public int getFormat()
-
info
public SegmentInfo info(int i)
-
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 filesegmentFileName
- -- segment file to load- Throws:
CorruptIndexException
- if the index is corruptIOException
- if there is a low-level IO error
-
read
public final void read(Directory directory) throws CorruptIndexException, IOException
This version of read uses the retry logic (for lock-less commits) to find the right segments file to load.- Throws:
CorruptIndexException
- if the index is corruptIOException
- 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.
-
getVersion
public long getVersion()
version number when this SegmentInfos was generated.
-
getGeneration
public long getGeneration()
-
getLastGeneration
public long getLastGeneration()
-
readCurrentVersion
@Deprecated public static long readCurrentVersion(Directory directory) throws CorruptIndexException, IOException
Deprecated.Load the SegmentInfos and then callgetVersion()
.Current version number from segments file.- Throws:
CorruptIndexException
- if the index is corruptIOException
- if there is a low-level IO error
-
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.
-
getInfoStream
public static PrintStream getInfoStream()
- See Also:
setInfoStream(java.io.PrintStream)
-
range
@Deprecated public SegmentInfos range(int first, int last)
Deprecated.useasList().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.
-
iterator
public Iterator<SegmentInfo> iterator()
Returns an unmodifiableIterator
of contained segments in order.- Specified by:
iterator
in interfaceIterable<SegmentInfo>
-
asList
public List<SegmentInfo> asList()
Returns all contained segments as an unmodifiableList
view.
-
asSet
public Set<SegmentInfo> asSet()
Returns all contained segments as an unmodifiableSet
view. The iterator is not sorted, useList
view oriterator()
to get all segments in order.
-
size
public int size()
-
add
public void add(SegmentInfo si)
-
addAll
public void addAll(Iterable<SegmentInfo> sis)
-
clear
public void clear()
-
remove
public void remove(SegmentInfo si)
-
remove
public void remove(int index)
-
contains
public boolean contains(SegmentInfo si)
-
indexOf
public int indexOf(SegmentInfo si)
-
-