public void Upgrade()
{
if (!DirectoryReader.IndexExists(Dir))
{
throw new IndexNotFoundException(Dir.ToString());
}
if (!DeletePriorCommits)
{
ICollection<IndexCommit> commits = DirectoryReader.ListCommits(Dir);
if (commits.Count > 1)
{
throw new System.ArgumentException("this tool was invoked to not delete prior commit points, but the following commits were found: " + commits);
}
}
IndexWriterConfig c = (IndexWriterConfig)Iwc.Clone();
c.SetMergePolicy(new UpgradeIndexMergePolicy(c.MergePolicy));
c.SetIndexDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy());
IndexWriter w = new IndexWriter(Dir, c);
try
{
InfoStream infoStream = c.InfoStream;
if (infoStream.IsEnabled("IndexUpgrader"))
{
infoStream.Message("IndexUpgrader", "Upgrading all pre-" + Constants.LUCENE_MAIN_VERSION + " segments of index directory '" + Dir + "' to version " + Constants.LUCENE_MAIN_VERSION + "...");
}
w.ForceMerge(1);
if (infoStream.IsEnabled("IndexUpgrader"))
{
infoStream.Message("IndexUpgrader", "All segments upgraded to version " + Constants.LUCENE_MAIN_VERSION);
}
}
finally
{
w.Dispose();
}
}
}