SearchIndexer

class in UnityEditor.Search

Description

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.

This class contains resources that must be disposed when it is no longer needed. See Dispose.

using UnityEditor;
using UnityEditor.Search;
using UnityEngine;

static class Example_SearchIndexer
{
    [MenuItem("Examples/SearchIndexer/Class")]
    public static void Run()
    {
        // Create a search indexer
        using var searchIndexer = new SearchIndexer("SearchIndexerExample");

        // 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})");
    }
}

Properties

documentCountReturns the number of documents in the index.
keywordCountReturns the number keywords in the index.
minQueryLengthMinimal length of a query. By default it is 1 character.
minWordIndexationLengthMinimal indexed word size. Default is 2.
nameName of the index. Generally this name is set by a user from SearchDatabase.Settings.
resolveDocumentHandlerHandler used to resolve a document ID to some other data string.
skipEntryHandlerHandler used to skip entries.
timestampIndicates when the search index was last modified.

Constructors

SearchIndexerCreates a new default SearchIndexer.

Public Methods

AddDocumentAdds a new document to be indexed.
AddExactWordAdds a new word coming from a document to the index. The word is added with multiple variations allowing partial search.
AddNumberAdds a key-number value pair to the index. The key won't be added with variations.
AddPropertyAdds 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.
AddWordAdds a new word coming from a document to the index. The word is added with multiple variations allowing partial search.
DisposeDispose of the SearchIndexer.
FinishFinalizes the current index, sorting and compiling of all the indexes.
GetDocumentReturns a search document by its index.
GetMetaInfoGet metadata of a specific document.
IndexDocumentFunction to override in a concrete SearchIndexer to index the content of a document.
IsReadyIndicates if the index is fully built, up to date, and ready for search.
LoadBytesLoads the index asynchronously (in another thread) from a binary buffer.
MergeMerge a search index content into the current index.
ReadReads a stream and populates the index from it.
SaveBytesGet the bytes representation of this index. See SearchIndexer.Write.
SearchRuns a search query in the index.
SetMetaInfoSet arbiraty metadata on a specific document.
SkipEntryCalled when the index is built to see if a specified document needs to be indexed. See SearchIndexer.skipEntryHandler.
StartStarts indexing entries.
WriteWrites a binary representation of the index on a stream.

Did you find this page useful? Please give it a rating: