Я написал программу, которая использует Lucene. net для индексации текстового файла объемом 3 ГБ. При построении индекса потребление ЦП процессом достигает 80, а использование памяти возрастает до ~ 1 ГБ. Есть ли способ ограничить использование процессора и памяти? Ниже приведена программа, которую я использую для построения индекса-
public void BuildIndex(string item)
{
System.Diagnostics.EventLog.WriteEntry("LuceneSearch", "Indexing Started for " + item);
string indexPath = string.Format(BaseIndexPath, "20200414", item);
if (System.IO.Directory.Exists(indexPath))
{
System.IO.Directory.Delete(indexPath, true);
}
LuceneIndexDirectory = FSDirectory.Open(indexPath);
Writer = new IndexWriter(LuceneIndexDirectory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED);
Writer.SetRAMBufferSizeMB(500);
string file = "c:\LogFile.txt";
string line=string.Empty;
int count = 0;
StreamReader fileReader = new StreamReader(file);
while ((line = fileReader.ReadLine()) != null)
{
count++;
Document doc = new Document();
try
{
doc.Add(new Field("LineNumber", count.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
doc.Add(new Field("LogTime", line.Substring(6, 12), Field.Store.YES, Field.Index.NOT_ANALYZED));
doc.Add(new Field("LineText", line.Substring(18, line.Length -18 ), Field.Store.YES, Field.Index.NOT_ANALYZED));
Writer.AddDocument(doc);
}
catch (Exception)
{
System.Diagnostics.EventLog.WriteEntry("LuceneSearch", "Exception ocurred while entring a line in the index");
}
}
System.Diagnostics.EventLog.WriteEntry("LuceneSearch", "Indexing finished for " + item + ". Starting Optimization now.");
Writer.Optimize();
Writer.Commit();
Writer.Close();
LuceneIndexDirectory.Dispose();
System.Diagnostics.EventLog.WriteEntry("LuceneSearch", "Optimization finished for " + item );
}