// caller: IndexPopulator.Populator
public void RepopulateTree(string path)
{
using (var op = SnTrace.Index.StartOperation("IndexPopulator RepopulateTree"))
{
var writer = IndexManager.GetIndexWriter(false);
writer.DeleteDocuments(new Term(LucObject.FieldName.InTree, path.ToLowerInvariant()));
try
{
var excludedNodeTypes = LuceneManager.GetNotIndexedNodeTypes();
foreach (var docData in StorageContext.Search.LoadIndexDocumentsByPath(path, excludedNodeTypes))
{
var doc = IndexDocumentInfo.GetDocument(docData);
if (doc == null) // indexing disabled
{
continue;
}
writer.AddDocument(doc);
OnNodeIndexed(docData.Path);
}
writer.Optimize();
}
finally
{
writer.Close();
}
op.Successful = true;
}
}