Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }