# SearchIndexer

> Base class for a document Indexer which provides methods for retrieving a document given a specific pattern in roughly log(n). This allows you to search a large index more quickly.

## Definition

* **Type:** Class
* **Namespace:** [UnityEditor.Search](/engine/6000.6/script-reference/unityeditor/search.md)
* **Assembly:** UnityEditor
* **Implements:** [IDisposable](https://learn.microsoft.com/dotnet/api/system.idisposable)

```csharp
public class SearchIndexer : IDisposable
```

## Remarks

This class contains resources that must be disposed when it is no longer needed. See [Dispose](/engine/6000.6/script-reference/unityeditor/search/searchindexer/dispose.md).

## Examples

```csharp
using UnityEditor;
using UnityEditor.Search;
using UnityEngine;

static class Example_SearchIndexer
{
    [MenuItem("Examples/SearchIndexer/Class")]
    public static void Run()
    {
        // Create a search indexer saved in the project temp folder
        using var searchIndexer = new SearchIndexer("SearchIndexerExample", FileUtil.GetUniqueTempPathInProject());

        // Indicate that searchIndexer is about to index documents
        searchIndexer.Start();

        // Add some documents
        var unityDocumentIndex = searchIndexer.AddDocument("Unity Technologies");

        // Index some words
        var baseScore = 42;
        searchIndexer.AddWord("unity", baseScore, unityDocumentIndex);
        searchIndexer.AddWord("is", baseScore, unityDocumentIndex);
        searchIndexer.AddWord("awesome", baseScore, unityDocumentIndex);

        // Indicate that searchIndexer is finished indexing documents and is ready to search.
        searchIndexer.Finish();

        // Wait for the indexation to finish.
        while (!searchIndexer.IsReady())
            ;

        // Search the index
        foreach (var result in searchIndexer.Search("uni"))
            Debug.Log($"Found document [{result.index}] {result.id} ({result.score})");
    }
}
```

## Constructors

| Constructor                                                                                                            | Description                  |
| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
| [SearchIndexer(System.String,System.String)](/engine/6000.6/script-reference/unityeditor/search/searchindexer/ctor.md) | Creates a new SearchIndexer. |

## Properties

| Property                                                                                                               | Description                                                            |
| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| [documentCount](/engine/6000.6/script-reference/unityeditor/search/searchindexer/documentcount.md)                     | Returns the number of documents in the index.                          |
| [keywordCount](/engine/6000.6/script-reference/unityeditor/search/searchindexer/keywordcount.md)                       | Returns the number keywords in the index.                              |
| [minQueryLength](/engine/6000.6/script-reference/unityeditor/search/searchindexer/minquerylength.md)                   | Minimal length of a query. By default it is 1 character.               |
| [minWordIndexationLength](/engine/6000.6/script-reference/unityeditor/search/searchindexer/minwordindexationlength.md) | Minimal indexed word size. Default is 2.                               |
| [name](/engine/6000.6/script-reference/unityeditor/search/searchindexer/name.md)                                       | Name of the index. Generally this name is set by a user from Settings. |
| [resolveDocumentHandler](/engine/6000.6/script-reference/unityeditor/search/searchindexer/resolvedocumenthandler.md)   | Handler used to resolve a document ID to some other data string.       |
| [skipEntryHandler](/engine/6000.6/script-reference/unityeditor/search/searchindexer/skipentryhandler.md)               | Handler used to skip entries.                                          |
| [timestamp](/engine/6000.6/script-reference/unityeditor/search/searchindexer/timestamp.md)                             | Indicates when the search index was last modified.                     |

## Methods

| Method                                                                                             | Description                                                                                                                                                                                                    |
| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AddDocument](/engine/6000.6/script-reference/unityeditor/search/searchindexer/adddocument.md)     | Adds a new document to be indexed.                                                                                                                                                                             |
| [AddNumber](/engine/6000.6/script-reference/unityeditor/search/searchindexer/addnumber.md)         | Adds a key-number value pair to the index. The key won't be added with variations.                                                                                                                             |
| [AddProperty](/engine/6000.6/script-reference/unityeditor/search/searchindexer/addproperty.md)     | Adds a property value to the index. A property is specified with a key and a string value. The value will be stored with multiple variations.                                                                  |
| [AddWord](/engine/6000.6/script-reference/unityeditor/search/searchindexer/addword.md)             | Adds a new word coming from a document to the index. The word is added with multiple variations allowing partial search.                                                                                       |
| [Dispose](/engine/6000.6/script-reference/unityeditor/search/searchindexer/dispose.md)             | Dispose of the [SearchIndexer](/engine/6000.6/script-reference/unityeditor/search/searchindexer.md).                                                                                                           |
| [Finish](/engine/6000.6/script-reference/unityeditor/search/searchindexer/finish.md)               | Finalizes the current index, sorting and compiling of all the indexes.                                                                                                                                         |
| [GetDocument](/engine/6000.6/script-reference/unityeditor/search/searchindexer/getdocument.md)     | Returns a search document by its index.                                                                                                                                                                        |
| [GetMetaInfo](/engine/6000.6/script-reference/unityeditor/search/searchindexer/getmetainfo.md)     | Get metadata of a specific document.                                                                                                                                                                           |
| [IndexDocument](/engine/6000.6/script-reference/unityeditor/search/searchindexer/indexdocument.md) | Function to override in a concrete SearchIndexer to index the content of a document.                                                                                                                           |
| [IsReady](/engine/6000.6/script-reference/unityeditor/search/searchindexer/isready.md)             | Indicates if the index is fully built, up to date, and ready for search.                                                                                                                                       |
| [Merge](/engine/6000.6/script-reference/unityeditor/search/searchindexer/merge.md)                 | Merge a search index content into the current index.                                                                                                                                                           |
| [Search](/engine/6000.6/script-reference/unityeditor/search/searchindexer/search.md)               | Runs a search query in the index.                                                                                                                                                                              |
| [SetMetaInfo](/engine/6000.6/script-reference/unityeditor/search/searchindexer/setmetainfo.md)     | Set arbiraty metadata on a specific document.                                                                                                                                                                  |
| [SkipEntry](/engine/6000.6/script-reference/unityeditor/search/searchindexer/skipentry.md)         | Called when the index is built to see if a specified document needs to be indexed. See [SearchIndexer.skipEntryHandler](/engine/6000.6/script-reference/unityeditor/search/searchindexer/skipentryhandler.md). |
| [Start](/engine/6000.6/script-reference/unityeditor/search/searchindexer/start.md)                 | Starts indexing entries.                                                                                                                                                                                       |
