private CurSearch CreateSearch() { var res = new CurSearch(); var loadedAssemblies = publicApiStorage .LoadAssemblies(); var namespaces = new HashSet <string>(); res.searchItems = loadedAssemblies .SelectMany(a => Prepare(a, namespaces)) .ToArray(); { var search_strings = res.searchItems.Select(w => w.ClassName); res.stat = wSBuilder.BuildStat(search_strings); var index = wSBuilder.Index(search_strings.Select(w => new Bulk { Sentence = w }), res.stat); res.classSearch = wSBuilder.CreateSearch(index); } res.BuildTime = DateTime.UtcNow; res.Namespaces = namespaces .OrderBy(w => w) .Select(w => new Base.NamespaceInfo { Namespace = w, Levels = w.Split('.').Length + 1 }) .ToArray(); return(res); }
public IEnumerable <Base.ISearchItem> Search(string query) { CurSearch search = GetSearch(); var name = query.ToLower(); var relevance = new Relevance(search.stat); var filtered = search.classSearch.Search(new Request { Message = query, TargetRelevance = 0.3f }) .OrderByDescending(w => w.Relevance) .Select(q => search.searchItems[q.DocumentIndex]) .ToArray(); return(relevance .ProcessResults(query, filtered)); }