---
title: "The IndexCrawler"
slug: "the-indexcrawler"
abstract: "Take an existing index and execute functions over it."
---
# The IndexCrawler

The `IndexCrawler` is a crawler that takes an existing index and executes a group of functions over it.

The `IndexCrawler` inherits from the `FlatDataCrawler<T>`. This means that you can pass a list of `IIndexables` and it iterates over them, then executes a function on each `IIndexable` and commits it back to the index.

This an example of what you can use it for: Go through every document in the index and add “!!” to the name of every document. The code would look like this:

```csharp
var crawler = new IndexCrawler(this.sourceIndexName);
crawler.CrawlFunctions += this.CallMe;
this.DestinationIndex.AddCrawler(crawler);
this.DestinationIndex.Rebuild();
public IEnumerable<IIndexable> CallMe(IProviderSearchContext context)
{
    var list = new List<IIndexable>();
    foreach (var item in context.GetQueryable<InsertDocument>())
    {
        item.Name = item.Name + "!!";
        list.Add(new ObjectIndexable(item, null));
    }
    return list.AsEnumerable();
}

```