本文整理汇总了C#中Lucene.Net.Index.SegmentInfos.GetGeneration方法的典型用法代码示例。如果您正苦于以下问题:C# SegmentInfos.GetGeneration方法的具体用法?C# SegmentInfos.GetGeneration怎么用?C# SegmentInfos.GetGeneration使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Lucene.Net.Index.SegmentInfos
的用法示例。
在下文中一共展示了SegmentInfos.GetGeneration方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CommitPoint
public CommitPoint(IndexFileDeleter enclosingInstance, System.Collections.ICollection commitsToDelete, Directory directory, SegmentInfos segmentInfos)
{
InitBlock(enclosingInstance);
this.directory = directory;
this.commitsToDelete = commitsToDelete;
userData = segmentInfos.GetUserData();
segmentsFileName = segmentInfos.GetCurrentSegmentFileName();
version = segmentInfos.GetVersion();
generation = segmentInfos.GetGeneration();
files = segmentInfos.Files(directory, true);
gen = segmentInfos.GetGeneration();
isOptimized = segmentInfos.Count == 1 && !segmentInfos.Info(0).HasDeletions();
System.Diagnostics.Debug.Assert(!segmentInfos.HasExternalSegments(directory));
}
示例2: ListCommits
/** @see IndexReader#listCommits */
public static new ICollection<IndexCommitPoint> ListCommits(Directory dir)
{
string[] files = dir.List();
if (files == null)
throw new System.IO.IOException("cannot read directory " + dir + ": list() returned null");
ICollection<IndexCommitPoint> commits = new List<IndexCommitPoint>();
SegmentInfos latest = new SegmentInfos();
latest.Read(dir);
long currentGen = latest.GetGeneration();
commits.Add(new ReaderCommit(latest, dir));
for (int i = 0; i < files.Length; i++)
{
String fileName = files[i];
if (fileName.StartsWith(IndexFileNames.SEGMENTS) &&
!fileName.Equals(IndexFileNames.SEGMENTS_GEN) &&
SegmentInfos.GenerationFromSegmentsFileName(fileName) < currentGen)
{
SegmentInfos sis = new SegmentInfos();
try
{
// IOException allowed to throw there, in case
// segments_N is corrupt
sis.Read(dir, fileName);
}
catch (System.Exception)
{
// LUCENE-948: on NFS (and maybe others), if
// you have writers switching back and forth
// between machines, it's very likely that the
// dir listing will be stale and will claim a
// file segments_X exists when in fact it
// doesn't. So, we catch this and handle it
// as if the file does not exist
sis = null;
}
if (sis != null)
commits.Add(new ReaderCommit(sis, dir));
}
}
return commits;
}
示例3: IndexFileDeleter
/// <summary> Initialize the deleter: find all previous commits in
/// the Directory, incref the files they reference, call
/// the policy to let it delete commits. This will remove
/// any files not referenced by any of the commits.
/// </summary>
/// <throws> CorruptIndexException if the index is corrupt </throws>
/// <throws> IOException if there is a low-level IO error </throws>
public IndexFileDeleter(Directory directory, IndexDeletionPolicy policy, SegmentInfos segmentInfos, System.IO.StreamWriter infoStream, DocumentsWriter docWriter, System.Collections.Generic.Dictionary<string, string> synced)
{
this.docWriter = docWriter;
this.infoStream = infoStream;
this.synced = synced;
if (infoStream != null)
{
Message("init: current segments file is \"" + segmentInfos.GetCurrentSegmentFileName() + "\"; deletionPolicy=" + policy);
}
this.policy = policy;
this.directory = directory;
// First pass: walk the files and initialize our ref
// counts:
long currentGen = segmentInfos.GetGeneration();
IndexFileNameFilter filter = IndexFileNameFilter.GetFilter();
System.String[] files = directory.ListAll();
CommitPoint currentCommitPoint = null;
for (int i = 0; i < files.Length; i++)
{
System.String fileName = files[i];
if (filter.Accept(null, fileName) && !fileName.Equals(IndexFileNames.SEGMENTS_GEN))
{
// Add this file to refCounts with initial count 0:
GetRefCount(fileName);
if (fileName.StartsWith(IndexFileNames.SEGMENTS))
{
// This is a commit (segments or segments_N), and
// it's valid (<= the max gen). Load it, then
// incref all files it refers to:
if (infoStream != null)
{
Message("init: load commit \"" + fileName + "\"");
}
SegmentInfos sis = new SegmentInfos();
try
{
sis.Read(directory, fileName);
}
catch (System.IO.FileNotFoundException e)
{
// LUCENE-948: on NFS (and maybe others), if
// you have writers switching back and forth
// between machines, it's very likely that the
// dir listing will be stale and will claim a
// file segments_X exists when in fact it
// doesn't. So, we catch this and handle it
// as if the file does not exist
if (infoStream != null)
{
Message("init: hit FileNotFoundException when loading commit \"" + fileName + "\"; skipping this commit point");
}
sis = null;
}
catch (System.IO.IOException e)
{
if (SegmentInfos.GenerationFromSegmentsFileName(fileName) <= currentGen)
{
throw e;
}
else
{
// Most likely we are opening an index that
// has an aborted "future" commit, so suppress
// exc in this case
sis = null;
}
}
if (sis != null)
{
CommitPoint commitPoint = new CommitPoint(this,commitsToDelete, directory, sis);
if (sis.GetGeneration() == segmentInfos.GetGeneration())
{
currentCommitPoint = commitPoint;
}
commits.Add(commitPoint);
IncRef(sis, true);
if (lastSegmentInfos == null || sis.GetGeneration() > lastSegmentInfos.GetGeneration())
{
lastSegmentInfos = sis;
}
}
//.........这里部分代码省略.........
示例4: ReaderCommit
internal ReaderCommit(SegmentInfos infos, Directory dir)
{
segmentsFileName = infos.GetCurrentSegmentFileName();
this.dir = dir;
int size = infos.Count;
files = new List<string>(size);
files.Add(segmentsFileName);
for (int i = 0; i < size; i++)
{
SegmentInfo info = infos.Info(i);
if (info.dir == dir)
SupportClass.CollectionsSupport.AddAll(info.Files(), files);
}
version = infos.GetVersion();
generation = infos.GetGeneration();
isOptimized = infos.Count == 1 && !infos.Info(0).HasDeletions();
}
示例5: NrtIsCurrent
internal virtual bool NrtIsCurrent(SegmentInfos infos)
{
lock (this)
{
if (!infos.Equals(segmentInfos))
{
// if any structural changes (new segments), we are
// stale
return false;
}
else if (infos.GetGeneration() != segmentInfos.GetGeneration())
{
// if any commit took place since we were opened, we
// are stale
return false;
}
else
{
return !docWriter.AnyChanges();
}
}
}
示例6: ReaderCommit
internal ReaderCommit(SegmentInfos infos, Directory dir)
{
segmentsFileName = infos.GetCurrentSegmentFileName();
this.dir = dir;
userData = infos.GetUserData();
files = infos.Files(dir, true);
version = infos.GetVersion();
generation = infos.GetGeneration();
isOptimized = infos.Count == 1 && !infos.Info(0).HasDeletions();
}
示例7: CommitPoint
public CommitPoint(IndexFileDeleter enclosingInstance, ICollection<IndexCommitPoint> commitsToDelete, Directory directory, SegmentInfos segmentInfos)
{
InitBlock(enclosingInstance);
this.directory = directory;
this.commitsToDelete = commitsToDelete;
segmentsFileName = segmentInfos.GetCurrentSegmentFileName();
version = segmentInfos.GetVersion();
generation = segmentInfos.GetGeneration();
int size = segmentInfos.Count;
files = new List<string>(size);
files.Add(segmentsFileName);
gen = segmentInfos.GetGeneration();
for (int i = 0; i < size; i++)
{
SegmentInfo segmentInfo = segmentInfos.Info(i);
if (segmentInfo.dir == Enclosing_Instance.directory)
{
SupportClass.CollectionsSupport.AddAll(segmentInfo.Files(), files);
}
}
isOptimized = segmentInfos.Count == 1 && !segmentInfos.Info(0).HasDeletions();
}
示例8: CommitPoint
public CommitPoint(IndexFileDeleter enclosingInstance, SegmentInfos segmentInfos)
{
InitBlock(enclosingInstance);
segmentsFileName = segmentInfos.GetCurrentSegmentFileName();
int size = segmentInfos.Count;
files = new System.Collections.ArrayList(size);
files.Add(segmentsFileName);
gen = segmentInfos.GetGeneration();
for (int i = 0; i < size; i++)
{
SegmentInfo segmentInfo = segmentInfos.Info(i);
if (segmentInfo.dir == Enclosing_Instance.directory)
{
System.Collections.IEnumerator filesEnum = segmentInfo.Files().GetEnumerator();
while (filesEnum.MoveNext())
{
files.Add(filesEnum.Current);
}
}
}
}