using System.Linq;
using UnityEditor;
using UnityEditor.Search;
using UnityEngine;
static class Example_SearchIndexer_AddNumber
{
[MenuItem("Examples/SearchIndexer/AddNumber")]
public static void Run()
{
var si = new SearchIndexer("SearchIndexerExample", FileUtil.GetUniqueTempPathInProject());
si.Start();
// Add some documents and index a power value that can be searched.
si.AddNumber("power", 4.4, score: 0, si.AddDocument("Weak"));
si.AddNumber("power", 6.42, score: 0, si.AddDocument("Healthy"));
si.AddNumber("power", 9.9, score: 0, si.AddDocument("Strong"));
si.Finish(() =>
{
SearchPowerLevels(si);
// Dispose the SearchIndexer when you are done with it.
si.Dispose();
});
}
private static void SearchPowerLevels(SearchIndexer si)
{
SearchPowerLevel(si, "power<5", 1);
SearchPowerLevel(si, "power>=6", 2);
}
static void SearchPowerLevel(SearchIndexer si, string powerQuery, int expectedCount)
{
var results = si.Search(powerQuery).ToList();
Debug.Assert(results.Count == expectedCount, "Invalid query");
Debug.Log($"Document with {powerQuery}: {string.Join(", ", results.Select(r => r.id))}");
}
}