Exemplo n.º 1
0
        public IEnumerable <Base.ISearchItem> ProcessResults(string query, IEnumerable <Base.ISearchItem> searchItems)
        {
            var source = searchItems
                         .Select(w => new RelItem {
                Item = w, Relevance = 0
            })
                         .ToArray();

            foreach (var ri in source)
            {
                var classNameRelevance = stat.CompareStrings(ri.Item.ClassName, query);
                var namespaceRelevance = stat.CompareStrings(ri.Item.Namespace ?? "", query);
                //double methodRelevance = 0.0;
                //foreach (var m in ri.Item.Class.Methods)
                //{
                //    if (!string.IsNullOrEmpty(m.Name))
                //    {
                //        var cs = stat.CompareStrings(m.Name, query);
                //        if (cs > 0)
                //            methodRelevance += cs;
                //    }
                //}

                ri.Relevance = 2.0 * classNameRelevance + 1 * namespaceRelevance;
                //if (ri.Item.Class.Methods.Length > 0)
                //    ri.Relevance += methodRelevance / ri.Item.Class.Methods.Length;
            }

            return(source
                   .OrderByDescending(q => q.Relevance)
                   .Select(w => w.Item));
        }