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); } }