key | Key used to retrieve the value. |
value | String value to store in the index. |
documentIndex | Document where the indexed value was found. |
saveKeyword | Indicates if we store this key in the keyword registry of the index. See SearchIndexer.GetKeywords. |
exact | If true, index stores an exact match entry for this word. |
score | Relevance score of the word. |
name | Key used to retrieve the value. |
minVariations | Minimum number of variations to compute for the value. Cannot be higher than the length of the word. |
maxVariations | Maximum number of variations to compute for the value. Cannot be higher than the length of the word. |
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.
using System.Linq; using UnityEditor; using UnityEditor.Search; using UnityEngine; static class Example_SearchIndexer_AddProperty { [MenuItem("Examples/SearchIndexer/AddProperty")] public static void Run() { var si = new SearchIndexer(); si.Start(); // Add a property with exact:true, meaning that you can either use is: or is= to search for results // These items are given a high score, so they will not be displayed first in the result list. si.AddProperty("is", "broken", score: 20, si.AddDocument("Bocument 1"), exact: true); si.AddProperty("is", "broken", score: 30, si.AddDocument("Bocument 4"), exact: true); // Use exact:false, so color=red won't match any result, just color:red, same for color:yel si.AddProperty("color", "red", si.AddDocument("RGB 55"), exact: false); si.AddProperty("color", "reddish", si.AddDocument("RGB 45"), exact: false); si.AddProperty("color", "yellow", si.AddDocument("RGB 66"), exact: false); // Use this version of AddProperty if you want to minimize how many index variations are computed. // In the example, if you want is:secret to match, but not is:secr si.AddProperty("is", "secret", minVariations: "secret".Length, maxVariations: "secret".Length, score: -99, si.AddDocument("Top Secret"), exact: true); si.Finish(() => { SearchDocuments(si, "Broken documents (Invalid query)", "is=broke", 0); SearchDocuments(si, "Broken documents", "is=broken", 2); SearchDocuments(si, "Color documents", "color=red", 0); SearchDocuments(si, "Color documents", "color:red", 2); SearchDocuments(si, "Color documents", "color:yel", 1); SearchDocuments(si, "Top documents", "is:secr", 0); SearchDocuments(si, "Top documents", "is:secret", 1); SearchDocuments(si, "Top documents", "is=secret", 1); // Dispose of the SearchIndexer when you are done with it. si.Dispose(); }); } private static void SearchDocuments(SearchIndexer si, string label, string query, int expectedCount) { var results = si.Search(query).ToList(); Debug.Assert(results.Count == expectedCount, $"Invalid {label} with {query}, expected {expectedCount} results but got {results.Count}"); if (results.Count > 0) Debug.Log($"{label} ({query}): {string.Join(", ", results.Select(r => $"{r.id} [{r.score}]"))}"); } }