public SearchProviderLazyResult(SearchProvider provider, string searchString, Func<SearchProviderLazyResult, string> lazyDescription, int priority = PriorityNormal)
     : base(provider)
 {
     Priority = priority;
     DisplayName = searchString;
     SearchString = searchString;
     this.lazyDescription = lazyDescription;
 }
Exemple #2
0
 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);
 }
Exemple #6
0
 public IHtmlParser GetHtmlParserBySearchProvider(SearchProvider searchProvider)
 {
     return(_htmlParsers.FirstOrDefault(h => h.SearchProvider == searchProvider));
 }
Exemple #7
0
 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();
 
    }
Exemple #9
0
            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);
                }
            }
Exemple #10
0
        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);
                }
            }
        }
Exemple #11
0
        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;
 }
Exemple #13
0
        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;
        }
Exemple #14
0
        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);
            }));
        }
Exemple #15
0
        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();
 }
Exemple #20
0
            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);
                    }
                }
            }
Exemple #21
0
 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);
 }
Exemple #23
0
        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);
        }
Exemple #26
0
        // 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);
        }
Exemple #28
0
 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);
        }
Exemple #30
0
        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)));
        }
Exemple #31
0
            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;
 }
Exemple #33
0
 public SearchService()
 {
     this.provider = new SearchProvider(ApiKey);
 }
Exemple #34
0
 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);
                }
            }
        }
Exemple #36
0
            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}")
 {
 }