private void menuItemOptimize_Click(object sender, System.EventArgs e)
{
if (indexReader == null)
{
ShowStatus(resources.GetString("NoIndex"));
return;
}
if (_readOnly)
{
ShowStatus(resources.GetString("Readonly"));
return;
}
try
{
indexReader.Close();
IndexWriter writer = new IndexWriter(dir, new WhitespaceAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED);
writer.SetUseCompoundFile(useCompound);
long startSize = FilesTabPage.CalcTotalFileSize(dir);
DateTime startTime = DateTime.Now;
writer.Optimize();
DateTime endTime = DateTime.Now;
long endSize = FilesTabPage.CalcTotalFileSize(dir);
long deltaSize = startSize - endSize;
String sign = deltaSize < 0 ? " Increased " : " Reduced ";
String sizeMsg = sign + FilesTabPage.NormalizeSize(Math.Abs(deltaSize)) + FilesTabPage.NormalizeUnit(Math.Abs(deltaSize));
String timeMsg = ((TimeSpan)(endTime - startTime)).TotalMilliseconds + " ms";
ShowStatus(sizeMsg + " in " + timeMsg);
tabFiles.ShowFiles(dir);
writer.Close();
indexReader = IndexReader.Open(dir, true);
InitOverview();
}
catch (Exception exc)
{
ShowStatus(exc.Message);
}
}