public override void Remove(string[] keys, WorkContext context)
{
Write((writer, analyzer, stats) =>
{
stats.Operation = IndexingWorkStats.Status.Ignore;
logIndexing.Debug(() => string.Format("Deleting ({0}) from {1}", string.Join(", ", keys), name));
var batchers = context.IndexUpdateTriggers.Select(x => x.CreateBatcher(name))
.Where(x => x != null)
.ToList();
keys.Apply(
key => batchers.ApplyAndIgnoreAllErrors(
exception =>
{
logIndexing.WarnException(
string.Format("Error when executed OnIndexEntryDeleted trigger for index '{0}', key: '{1}'",
name, key),
exception);
context.AddError(name, key, exception.Message);
},
trigger => trigger.OnIndexEntryDeleted(key)));
writer.DeleteDocuments(keys.Select(k => new Term(Constants.DocumentIdFieldName, k.ToLowerInvariant())).ToArray());
batchers.ApplyAndIgnoreAllErrors(
e =>
{
logIndexing.WarnException("Failed to dispose on index update trigger", e);
context.AddError(name, null, e.Message);
},
batcher => batcher.Dispose());
return(keys.Length);
});
}