An index update trigger is used to do some operations whenever the index is updated. This can be used to notify a 3rd party or keep a static version of the index at a particular point in time.
Index update triggers inherit from AbstractIndexUpdateTrigger:
Example: creating static snapshot from the indexed document
public class SnapshotShoppingCart : AbstractIndexUpdateTrigger
public override void OnIndexEntryCreated(string indexName, string entryKey, Lucene.Net.Documents.Document document)
if (indexName != "Aggregates/ShoppingCart")
var shoppingCart = JObject.Parse(document.GetField("Aggregate").StringValue());
var shoppingCartId = document.GetField("Id").StringValue();
var result = Database.Put("shoppingcarts/" + shoppingCartId + "/snapshots/", null, shoppingCart, new JObject(), null);
document.Add(new Field("Snapshot", result.Key, Field.Store.YES, Field.Index.NOT_ANALYZED));
This index works on the following index in order to create a static snapshot of the indexed document whenever it is indexed. Note that we use identity insert here (the key we use ends with '/') so we will have documents like this:
This is nice if we want to keep a record of all the changes to the index. Note that we also change the document to store the snapshot key for this particular version.