# CreateIndex(in string, in IndexingOptions, IEnumerable<string>, IEnumerable<string>, IEnumerable<string>, Action<string, string, Action>)

> Create a new search index.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor.Search](/engine/6000.6/script-reference/unityeditor/search.md)
* **Assembly:** UnityEditor

## CreateIndex(string, IndexingOptions, IEnumerable\<string>, IEnumerable\<string>, IEnumerable\<string>, Action\<string, string, Action>)

> **Warning:**
>
> **Deprecated.** This API has been marked as deprecated and may be removed in a future version.

```csharp
public static void CreateIndex(in string name, in IndexingOptions options, IEnumerable<string> roots, IEnumerable<string> includes, IEnumerable<string> excludes, Action<string, string, Action> onIndexReady)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Unique name of the search index.**** (\[IndexingOptions]\(/engine/6000.6/script-reference/unityeditor/search/indexingoptions)): Indexing option set.**** (\[IEnumerable\<string>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)): Search index roots, for example "Assets" to index all Assets under Assets.**** (\[IEnumerable\<string>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)): Exclusive list of assets to be indexed. If this list is empty, everything will be indexed.**** (\[IEnumerable\<string>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)): Patterns to exclude assets to be indexed under roots.**** (\[Action\<string, string, Action>]\(https\://learn.microsoft.com/dotnet/api/system.action)): Callback that gets invoked when the index is created and ready to be used.

### Examples

```csharp
static string EnsureDecalPropertyIndexing()
{
    var materialDb = SearchService.EnumerateDatabases().FirstOrDefault(IsIndexingMaterialProperties);
    if (materialDb != null)
        return materialDb.name;

    if (!EditorUtility.DisplayDialog("Create decal material index",
        "Your project does not contain an index with decal material properties." +
        "\n\n" +
        "Do you want to create one now?", "Yes", "No"))
        return null;

    var dbName = "Decals";
    SearchService.CreateIndex(dbName,
        IndexingOptions.Properties | IndexingOptions.Dependencies |
        IndexingOptions.Types | IndexingOptions.Keep,
        roots: null,
        includes: new string[] { ".mat" },
        excludes: null,
        (name, path, finished) =>
        {
            Debug.Log($"Material index {name} created at {path}");
            finished();
        });
    return dbName;
}

static bool IsIndexingMaterialProperties(ISearchDatabase db)
{
    if (string.Equals(db.name, "Materials", StringComparison.OrdinalIgnoreCase))
        return true;
    return (db.indexingOptions & IndexingOptions.Properties) == IndexingOptions.Properties
        && (db.includePatterns.Count == 0 || db.includePatterns.Contains(".mat"));
}
```
