public SearchProviderLazyResult(SearchProvider provider, string searchString, Func<SearchProviderLazyResult, string> lazyDescription, int priority = PriorityNormal) : base(provider) { Priority = priority; DisplayName = searchString; SearchString = searchString; this.lazyDescription = lazyDescription; }
private static IEnumerable <SearchItem> SearchLogs(SearchContext context, SearchProvider provider) { lock (s_Logs) { for (int logIndex = 0; logIndex < s_Logs.Count; ++logIndex) { yield return(SearchLogEntry(context, provider, s_Logs[logIndex])); } } }
public void Items_EmptyDatasource_ReturnsEmptyCollection([ResolvePipeline("getRenderingDatasource")] EmptyPipeline processor, List <DbItem> indexedItems, SearchProvider searchProvider, ISearchIndex index, string indexName, [Content] Item renderingItem) { //arrange InitIndexes(index, searchProvider, new List <SearchResultItem>().AsQueryable()); var renderingModel = new QueryableDatasourceRenderingModel() { Rendering = new Rendering() }; //act var items = renderingModel.Items; //assert items.Count().Should().Be(0); index.CreateSearchContext().DidNotReceiveWithAnyArgs(); }
public void Items_ItemTemplateSet_FiltersByTemplateId(Db db, [Content] DbTemplate templateItem, [Content] DbItem[] contentItems, ISearchIndex index, [ReplaceSearchProvider] SearchProvider searchProvider, string indexName, [Content] Item renderingItem) { //arrange var dbItem = new DbItem("templated", ID.NewID, templateItem.ID); db.Add(dbItem); var dbItems = contentItems.ToList(); dbItems.Add(dbItem); var results = GetResults(dbItems); InitIndexes(index, searchProvider, results); var renderingModel = new QueryableDatasourceRenderingModel() { Rendering = new Rendering() { DataSource = "notEmpty" } }; renderingModel.DatasourceTemplate = db.GetItem(templateItem.ID); //act var items = renderingModel.Items; //assert items.Count().Should().Be(1); index.CreateSearchContext().ReceivedWithAnyArgs(1); }
protected void CreateSearch() { SearchProvider = ScriptableObject.CreateInstance <SleipnirGraphSearchProvider>(); SearchProvider.Initialize(this); nodeCreationRequest = ctx => SearchWindow.Open(new SearchWindowContext(ctx.screenMousePosition), SearchProvider); }
public IHtmlParser GetHtmlParserBySearchProvider(SearchProvider searchProvider) { return(_htmlParsers.FirstOrDefault(h => h.SearchProvider == searchProvider)); }
private static IEnumerable <SearchItem> SearchIndex(SearchIndexer fileIndexer, string filter, bool searchPackages, SearchProvider provider) { return(fileIndexer.Search(filter, searchPackages ? int.MaxValue : 100).Select(e => { var filename = Path.GetFileName(e.path); var filenameNoExt = Path.GetFileNameWithoutExtension(e.path); var itemScore = e.score; if (filenameNoExt.Equals(filter, StringComparison.InvariantCultureIgnoreCase)) { itemScore = SearchProvider.k_RecentUserScore + 1; } return provider.CreateItem(e.path, itemScore, filename, null, null, null); })); }
public void Items_EmptyDatasource_ReturnsEmptyCollection([ResolvePipeline("getRenderingDatasource")] EmptyPipeline processor, List<DbItem> indexedItems,SearchProvider searchProvider, ISearchIndex index, string indexName, [Content] Item renderingItem) { //arrange InitIndexes(index, searchProvider, new List<SearchResultItem>().AsQueryable()); var renderingModel = new QueryableDatasourceRenderingModel() { Rendering = new Rendering()}; //act var items = renderingModel.Items; //assert items.Count().Should().Be(0); index.CreateSearchContext().DidNotReceiveWithAnyArgs(); }
private static IEnumerable <SearchItem> SearchEntries(SearchContext context, SearchProvider provider) { var localSearchQuery = context.searchQuery; while (s_BuildingIndex) { yield return(null); } Process essProcess; var lines = new List <string>(); //using (new DebugTimer("ProcessStart")) { try { essProcess = CreateESSProcess("search", ParamValueString("index", indexPath), localSearchQuery); essProcess.OutputDataReceived += (sender, log) => { lock (lines) { lines.Add(log.Data); } }; essProcess.Start(); essProcess.BeginOutputReadLine(); } catch (Exception e) { UnityEngine.Debug.LogException(e); yield break; } } while (!essProcess.WaitForExit(1)) { // Copy the collection so it does not get modified during enumeration string[] linesCopy; lock (lines) { linesCopy = lines.ToArray(); lines.Clear(); } foreach (var searchItem in SearchLines(provider, linesCopy, localSearchQuery)) { yield return(searchItem); } yield return(null); } foreach (var searchItem in SearchLines(provider, lines, localSearchQuery)) { yield return(searchItem); } }
private static IEnumerator SearchAssets(SearchContext context, List <SearchItem> items, SearchProvider provider) { var searchQuery = context.searchQuery; var searchGuids = context.categories.Any(c => c.id == "guid" && c.isEnabled); var searchPackages = context.categories.Any(c => c.id == "packages" && c.isEnabled); // Search by GUIDs if (searchGuids) { var gui2Path = AssetDatabase.GUIDToAssetPath(searchQuery); if (!String.IsNullOrEmpty(gui2Path)) { yield return(provider.CreateItem(gui2Path, -1, $"{Path.GetFileName(gui2Path)} ({searchQuery})", null, null, null)); } } if (SearchSettings.useUberIndexing) { var adbIndex = ADBIndex.Get(); if (!adbIndex.IsReady()) { foreach (var assetEntry in AssetDatabase.FindAssets(searchQuery) .Select(AssetDatabase.GUIDToAssetPath) .Select(path => provider.CreateItem(path, Path.GetFileName(path)))) { yield return(assetEntry); } } // Search index while (!adbIndex.IsReady()) { yield return(null); } yield return(adbIndex.Search(searchQuery).Select(e => { var filename = Path.GetFileName(e.path); var filenameNoExt = Path.GetFileNameWithoutExtension(e.path); var itemScore = e.score; var words = context.searchPhrase; if (filenameNoExt.Equals(words, StringComparison.OrdinalIgnoreCase)) { itemScore = SearchProvider.k_RecentUserScore + 1; } string description = adbIndex.GetDebugIndexStrings(e.path); return provider.CreateItem(e.path, itemScore, filename, description, null, null); })); } else { var fileIndexerReady = fileIndexer.IsReady(); if (fileIndexerReady) { if (searchQuery.IndexOfAny(k_InvalidIndexedChars) == -1) { foreach (var item in SearchFileIndex(searchQuery, searchPackages, provider)) { yield return(item); } if (!context.wantsMore) { yield break; } } } if (!searchPackages) { if (!searchQuery.Contains("a:assets")) { searchQuery = "a:assets " + searchQuery; } } foreach (var assetEntry in AssetDatabase.FindAssets(searchQuery).Select(AssetDatabase.GUIDToAssetPath).Select(path => provider.CreateItem(path, Path.GetFileName(path)))) { yield return(assetEntry); } if (!fileIndexerReady) { // Indicate to the user that we are still building the index. while (!fileIndexer.IsReady()) { yield return(null); } foreach (var item in SearchFileIndex(searchQuery, searchPackages, provider)) { yield return(item); } } } // Search file system wildcards if (context.searchQuery.Contains('*')) { var safeFilter = string.Join("_", context.searchQuery.Split(k_InvalidSearchFileChars)); var projectFiles = System.IO.Directory.EnumerateFiles(Application.dataPath, safeFilter, System.IO.SearchOption.AllDirectories); projectFiles = projectFiles.Select(path => path.Replace(Application.dataPath, "Assets").Replace("\\", "/")); foreach (var fileEntry in projectFiles.Select(path => provider.CreateItem(path, Path.GetFileName(path)))) { yield return(fileEntry); } } }
private IEnumerator <SearchItem> BuildGODS(SearchContext context, SearchProvider provider) { //using (new DebugTimer("BuildGODS")) { var objects = new GameObject[0]; var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); if (prefabStage != null) { objects = SceneModeUtility.GetObjects(new[] { prefabStage.prefabContentsRoot }, true); yield return(null); } else { var goRoots = new List <UnityEngine.Object>(); for (int i = 0; i < SceneManager.sceneCount; ++i) { var scene = SceneManager.GetSceneAt(i); if (!scene.IsValid() || !scene.isLoaded) { continue; } var sceneRootObjects = scene.GetRootGameObjects(); if (sceneRootObjects != null && sceneRootObjects.Length > 0) { goRoots.AddRange(sceneRootObjects); } yield return(null); } objects = SceneModeUtility.GetObjects(goRoots.ToArray(), true); yield return(null); } //using (new DebugTimer($"Fetching Scene Objects Components")) { List <int> matches = new List <int>(); var useFuzzySearch = objects.Length < k_LODDetail2 && context.categories.Any(c => c.name.id == "fuzzy" && c.isEnabled); gods = new GOD[objects.Length]; for (int i = 0; i < objects.Length; ++i) { gods[i].gameObject = objects[i]; var id = gods[i].gameObject.GetInstanceID(); if (!componentsById.TryGetValue(id, out gods[i].name)) { if (gods.Length > k_LODDetail2) { gods[i].rawname = gods[i].gameObject.name; } else if (gods.Length > k_LODDetail1) { gods[i].rawname = GetTransformPath(gods[i].gameObject.transform); } else { gods[i].rawname = BuildComponents(gods[i].gameObject); } gods[i].name = CleanString(gods[i].rawname); componentsById[id] = gods[i].name; } gods[i].id = id.ToString(); yield return(MatchGOD(context, provider, gods[i], i, useFuzzySearch, CleanString(context.searchQuery), matches)); } } } }
public GetSiteSearchRankingQuery(string keywords, string uri, SearchProvider searchProvider) { Keywords = keywords; Uri = uri; SearchProvider = searchProvider; }
public SearchSummaryPageViewModel( SearchProvider searchProvider, Services.PageManager pageManager ) { RelatedVideoTags = new ObservableCollection <string>(); KeywordSearchResultItems = this.ObserveProperty(x => x.Keyword) .Where(x => !string.IsNullOrWhiteSpace(x)) .SelectMany(async(x, i, cancelToken) => { RelatedVideoTags.Clear(); var res = await SearchProvider.GetKeywordSearch(x, 0, 10); if (res.IsOK) { KeywordSearchItemsTotalCount = (int)res.GetTotalCount(); if (res.Tags != null) { foreach (var tag in res.Tags.TagItems) { RelatedVideoTags.Add(tag.Name); } } return(res.VideoInfoItems?.AsEnumerable() ?? Enumerable.Empty <Mntone.Nico2.Searches.Video.VideoInfo>()); } else { return(Enumerable.Empty <Mntone.Nico2.Searches.Video.VideoInfo>()); } }) .SelectMany(x => x) .Select(x => { var vm = new VideoInfoControlViewModel(x.Video.Id); vm.SetTitle(x.Video.Title); vm.SetThumbnailImage(x.Video.ThumbnailUrl.OriginalString); return(vm); }) .ToReadOnlyReactiveCollection(onReset: this.ObserveProperty(x => x.Keyword).ToUnit()) .AddTo(_CompositeDisposable); HasKeywordSearchResultItems = KeywordSearchResultItems .ObserveProperty(x => x.Count) .Select(x => x > 0) .ToReadOnlyReactiveProperty() .AddTo(_CompositeDisposable); RelatedLiveTags = new ObservableCollection <string>(); LiveSearchResultItems = this.ObserveProperty(x => x.Keyword) .Where(x => !string.IsNullOrWhiteSpace(x)) .SelectMany(async(x, i, cancelToken) => { RelatedLiveTags.Clear(); var res = await SearchProvider.LiveSearchAsync(x, false, length: 10); if (res.IsStatusOK) { if (res.Tags != null) { foreach (var tag in res.Tags.Tag) { RelatedLiveTags.Add(tag.Name); } } LiveSearchItemsTotalCount = res.TotalCount.FilteredCount; return(res.VideoInfo?.AsEnumerable() ?? Enumerable.Empty <Mntone.Nico2.Searches.Live.VideoInfo>()); } else { return(Enumerable.Empty <Mntone.Nico2.Searches.Live.VideoInfo>()); } }) .SelectMany(x => x) .Select(x => { var liveInfoVM = new LiveInfoListItemViewModel(x.Video.Id); liveInfoVM.Setup(x); return(liveInfoVM); }) .ToReadOnlyReactiveCollection(onReset: this.ObserveProperty(x => x.Keyword).ToUnit()); HasLiveSearchResultItems = LiveSearchResultItems .ObserveProperty(x => x.Count) .Select(x => x > 0) .ToReadOnlyReactiveProperty() .AddTo(_CompositeDisposable); SearchProvider = searchProvider; PageManager = pageManager; }
private static IEnumerable <SearchItem> SearchFiles(string filter, bool searchPackages, SearchProvider provider) { UnityEngine.Assertions.Assert.IsNotNull(fileIndexer); return(fileIndexer.Search(filter, searchPackages ? int.MaxValue : 100).Select(e => { var filename = Path.GetFileName(e.id); var filenameNoExt = Path.GetFileNameWithoutExtension(e.id); var itemScore = e.score; if (filenameNoExt.Equals(filter, StringComparison.OrdinalIgnoreCase)) { itemScore = SearchProvider.k_RecentUserScore + 1; } return provider.CreateItem(e.id, itemScore, filename, null, null, null); })); }
private static IEnumerator SearchAssets(SearchContext context, SearchProvider provider) { var searchQuery = context.searchQuery; const bool searchGuids = true; const bool searchPackages = true; // Search by GUIDs if (searchGuids) { var gui2Path = AssetDatabase.GUIDToAssetPath(searchQuery); if (!String.IsNullOrEmpty(gui2Path)) { yield return(provider.CreateItem(gui2Path, -1, $"{Path.GetFileName(gui2Path)} ({searchQuery})", null, null, null)); } } if (SearchSettings.assetIndexing == SearchAssetIndexing.Complete) { yield return(assetIndexes.Select(db => SearchIndexes(context, provider, db.index))); } else if (SearchSettings.assetIndexing == SearchAssetIndexing.Files) { if (searchQuery.IndexOf(':') != -1) { foreach (var assetEntry in AssetDatabase.FindAssets(searchQuery) .Select(AssetDatabase.GUIDToAssetPath) .Select(path => provider.CreateItem(path, Path.GetFileName(path)))) { yield return(assetEntry); } } while (!fileIndexer.IsReady()) { yield return(null); } foreach (var item in SearchFiles(searchQuery, searchPackages, provider)) { yield return(item); } } else { foreach (var assetEntry in AssetDatabase.FindAssets(searchQuery).Select(AssetDatabase.GUIDToAssetPath).Select(path => provider.CreateItem(path, Path.GetFileName(path)))) { yield return(assetEntry); } } if (context.wantsMore && context.filterType != null && String.IsNullOrEmpty(context.searchQuery)) { yield return(AssetDatabase.FindAssets($"t:{context.filterType.Name}") .Select(guid => AssetDatabase.GUIDToAssetPath(guid)) .Select(path => provider.CreateItem(path, 999, Path.GetFileName(path), null, null, null))); } // Search file system wild cards if (context.searchQuery.Contains('*')) { var safeFilter = string.Join("_", context.searchQuery.Split(k_InvalidSearchFileChars)); var projectFiles = System.IO.Directory.EnumerateFiles(Application.dataPath, safeFilter, System.IO.SearchOption.AllDirectories); projectFiles = projectFiles.Select(path => path.Replace(Application.dataPath, "Assets").Replace("\\", "/")); foreach (var fileEntry in projectFiles.Select(path => provider.CreateItem(path, Path.GetFileName(path)))) { yield return(fileEntry); } } }
private static void SetupSearchProvider(SearchProvider searchProvider) { var providerHelper = new ProviderHelper<SearchProvider, SearchProviderCollection>("randomString"); typeof(ContentSearchManager).GetField("ProviderHelper", BindingFlags.Static | BindingFlags.NonPublic).SetValue(null, providerHelper); providerHelper.GetType().GetField("_provider", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(providerHelper, searchProvider); }
private void Find(string textQuery) { SearchProvider taskSearchProvider = new SearchProvider(); Tasks = taskSearchProvider.FindTasks(textQuery); }
public ISearchUrlBuilder GetSearchUrlBuilder(SearchProvider searchProvider) { var searchUrlBuilder = _searchUrlBuilders.FirstOrDefault(s => s.SearchProvider == searchProvider); return(searchUrlBuilder); }
public SearchService(SearchProvider searchProvider) { this.searchProvider = searchProvider; tokenSource = new CancellationTokenSource(); }
internal static IEnumerable <SearchItem> SearchItems(SearchContext context, SearchProvider provider) { var webRequest = UnityWebRequest.Get(url + context.searchQuery); webRequest.SetRequestHeader("X-Unity-Session", InternalEditorUtility.GetAuthToken()); webRequest.SendWebRequest(); // Don't yield return this, as it is not a coroutine and will block the UI while (!webRequest.isDone) { if (webRequest.isHttpError || webRequest.isNetworkError) { yield break; } yield return(null); } if (string.IsNullOrEmpty(webRequest.downloadHandler.text)) { yield break; } var reqJson = Utils.JsonDeserialize(webRequest.downloadHandler.text) as Dictionary <string, object>; if (reqJson == null || !reqJson.ContainsKey("status") || reqJson["status"].ToString() != "ok" || !reqJson.ContainsKey("groups")) { yield break; } if (!(reqJson["groups"] is List <object> groups)) { yield break; } foreach (var g in groups) { var group = g as Dictionary <string, object>; if (group == null || !group.ContainsKey("matches")) { yield return(null); continue; } var matches = group["matches"] as List <object>; if (matches == null) { yield return(null); continue; } foreach (var m in matches.Take(50)) { var match = m as Dictionary <string, object>; if (match == null) { yield return(null); continue; } match["groupType"] = group["name"]; if (!match.ContainsKey("name") || !match.ContainsKey("id") || !match.ContainsKey("package_id")) { yield return(null); continue; } var id = match["id"].ToString(); var data = new AssetStoreData { packageId = Convert.ToInt32(match["package_id"]), id = Convert.ToInt32(match["id"]) }; var item = provider.CreateItem(id, match["name"].ToString(), $"Asset Store ({match["groupType"]})", null, data); if (match.ContainsKey("static_preview_url") && !s_CurrentSearchAssetData.ContainsKey(id)) { s_CurrentSearchAssetData.Add(id, new AssetPreviewData() { staticPreviewUrl = match["static_preview_url"].ToString() }); } yield return(item); } } }
public NoSearchResultsParsedException(SearchProvider provider, string keywords) : base($"No search results found for provider {provider} for {keywords}") { }
public void Init() { _sourceText = "Карл у Клары украл кораллы, а Клара у Карла украла кларнет."; _exactSearchProvider = SearchProviderFactory.GetSearchProvider(SearchProviderType.ExactSearchProvider, _sourceText); }
private static IEnumerator SearchIndexes(string searchQuery, SearchContext context, SearchProvider provider, SearchDatabase db, int scoreModifier = 0) { while (db.index == null) { yield return(null); } // Search index var index = db.index; while (!index.IsReady()) { yield return(null); } yield return(index.Search(searchQuery.ToLowerInvariant()).Select(e => { var itemScore = e.score + scoreModifier; return provider.CreateItem(context, e.id, itemScore, null, null, null, index.GetDocument(e.index)); })); }
public SearchProviderResult(SearchProvider provider) { this.Provider = provider; DisplayColor = Color.FromRgb(0, 0, 0); }
public void Items_IndexMatchDb_ReturnsAllItems([Content] DbItem[] contentItems, ISearchIndex index, [ReplaceSearchProvider] SearchProvider searchProvider, [Content] Item renderingItem) { //arrange var results = GetResults(contentItems); InitIndexes(index, searchProvider, results); var renderingModel = new QueryableDatasourceRenderingModel() { Rendering = new Rendering() { DataSource = "notEmpty" } }; //act var items = renderingModel.Items; //assert items.Count().Should().Be(contentItems.Length); index.CreateSearchContext().ReceivedWithAnyArgs(1); }
// GET: Provider/Create public ActionResult Create() { var model = new SearchProvider(); return(View(model)); }
public void Items_IndexHaveNonexistentItems_ReturnsExistentItems([Content] DbItem[] contentItems, DbItem brokenItem, List <DbItem> indexedItems, ISearchIndex index, string indexName, [ReplaceSearchProvider] SearchProvider searchProvider, [Content] Item renderingItem) { //arrange indexedItems.AddRange(contentItems); indexedItems.Add(brokenItem); var results = GetResults(indexedItems); InitIndexes(index, searchProvider, results); var renderingModel = new QueryableDatasourceRenderingModel() { Rendering = new Rendering() { DataSource = "notEmpty" } }; //act var items = renderingModel.Items.ToArray(); //assert items.Count().Should().Be(contentItems.Length); index.CreateSearchContext().ReceivedWithAnyArgs(1); }
private static IEnumerable <SearchItem> SearchLogs(SearchContext context, SearchProvider provider) { lock (s_Logs) { if (!s_Initialized) { s_Initialized = true; Application.logMessageReceived -= HandleLog; Application.logMessageReceived += HandleLog; } for (int logIndex = 0; logIndex < s_Logs.Count; ++logIndex) { yield return(SearchLogEntry(context, provider, s_Logs[logIndex])); } } }
public void Items_NotLatestItemVersionExists_ReturnsOnlyLatestItems([Content] DbItem[] contentItems, ISearchIndex index, [ReplaceSearchProvider] SearchProvider searchProvider, [Content] Item renderingItem) { //arrange var results = GetResults(contentItems).ToArray(); results.First().IsLatestVersion = false; InitIndexes(index, searchProvider, results.AsQueryable()); var renderingModel = new QueryableDatasourceRenderingModel() { Rendering = new Rendering() { DataSource = "notEmpty" } }; //act var items = renderingModel.Items; //assert items.Count().Should().Be(contentItems.Length - 1); index.CreateSearchContext().ReceivedWithAnyArgs(1); }
private static IEnumerator SearchIndexes(string searchQuery, SearchContext context, SearchProvider provider, SearchDatabase db) { while (!db.ready) { if (!db || context.options.HasFlag(SearchFlags.Synchronous)) { yield break; } yield return(null); } // Search index var index = db.index; db.Report("Search", searchQuery); yield return(index.Search(searchQuery.ToLowerInvariant()).Select(e => CreateItem(context, provider, db.name, e.id, e.score))); }
private static IEnumerable <SearchItem> SearchPackages(SearchContext context, SearchProvider provider) { if (string.IsNullOrEmpty(context.searchQuery)) { yield break; } if (s_SearchRequest == null || s_ListRequest == null) { yield break; } while (!s_SearchRequest.IsCompleted || !s_ListRequest.IsCompleted) { yield return(null); } if (s_SearchRequest.Result == null || s_ListRequest.Result == null) { yield break; } foreach (var p in s_SearchRequest.Result) { if (p.keywords.Contains(context.searchQuery) || SearchUtils.MatchSearchGroups(context, p.description.ToLowerInvariant(), true) || SearchUtils.MatchSearchGroups(context, p.name.ToLowerInvariant(), true)) { yield return(provider.CreateItem(context, p.packageId, String.IsNullOrEmpty(p.resolvedPath) ? 0 : 1, FormatLabel(p), FormatDescription(p), null, p)); } } }
public SearchByController(SearchProvider provider) { this.provider = provider; }
public SearchService() { this.provider = new SearchProvider(ApiKey); }
private void btnSearch_Click(object sender, EventArgs e) { SearchProvider.Search(teKeyword.Text); }
public virtual void DoProviderCompleteSearch(object p, SearchProvider.SearchResult r) { if (r.SearchRequest.RequestNumber != SearchRequestNumber) return; lock (syncObject) { SearchTime += r.SearchPerformance.ElapsedMilliseconds; var handler = OnProviderCompleteSearch; if (handler != null) { if (r.SearchRequest.RequestNumber == SearchRequestNumber) handler(this, p as SearchProvider, r); } } }
private static IEnumerable <SearchItem> SearchAssets(SearchContext context, List <SearchItem> items, SearchProvider provider, SearchIndexer fileIndexer) { var filter = context.searchQuery; var searchPackages = context.categories.Any(c => c.name.id == "packages" && c.isEnabled); var searchGuids = context.categories.Any(c => c.name.id == "guid" && c.isEnabled); if (searchGuids) { var gui2Path = AssetDatabase.GUIDToAssetPath(filter); if (!System.String.IsNullOrEmpty(gui2Path)) { items.Add(provider.CreateItem(gui2Path, -1, $"{Path.GetFileName(gui2Path)} ({filter})", null, null, null)); } } var indexReady = fileIndexer.IsReady(); if (indexReady) { if (filter.IndexOfAny(k_InvalidIndexedChars) == -1) { foreach (var item in SearchIndex(fileIndexer, filter, searchPackages, provider)) { yield return(item); } if (!context.wantsMore) { yield break; } } } if (!searchPackages) { if (!filter.Contains("a:assets")) { filter = "a:assets " + filter; } } foreach (var assetEntry in AssetDatabase.FindAssets(filter).Select(AssetDatabase.GUIDToAssetPath).Select(path => provider.CreateItem(path, Path.GetFileName(path)))) { yield return(assetEntry); } if (context.searchQuery.Contains('*')) { var safeFilter = string.Join("_", context.searchQuery.Split(k_InvalidSearchFileChars)); foreach (var fileEntry in Directory.EnumerateFiles(Application.dataPath, safeFilter, SearchOption.AllDirectories) .Select(path => provider.CreateItem(path.Replace(Application.dataPath, "Assets").Replace("\\", "/"), Path.GetFileName(path)))) { yield return(fileEntry); } } if (!indexReady) { // Indicate to the user that we are still building the index. while (!fileIndexer.IsReady()) { yield return(null); } foreach (var item in SearchIndex(fileIndexer, filter, searchPackages, provider)) { yield return(item); } } }
private static void InitIndexes(ISearchIndex index, SearchProvider searchProvider, IQueryable<SearchResultItem> results) { ContentSearchManager.SearchConfiguration.Indexes.Clear(); searchProvider?.GetContextIndexName(Arg.Any<IIndexable>(), Arg.Any<ICorePipeline>()).Returns("CustomIndexName"); var providerSearchContext = Substitute.For<IProviderSearchContext>(); index.ReturnsForAll(providerSearchContext); providerSearchContext.GetQueryable<SearchResultItem>(Arg.Any<IExecutionContext[]>()).Returns(results); ContentSearchManager.SearchConfiguration.Indexes.Add("CustomIndexName", index); }
public SearchUrlBuilderNotFoundException(SearchProvider provider) : base($"No url builder found for provider {provider}") { }