private IEnumerable <SearchResult> SimpleSearch(TextSearch search,
                                                        StringBuilder query,
                                                        FieldMappingQueryParser <TextDocument> parser)
        {
            var args = search.Content.Split(' ').Distinct().ToArray();

            foreach (var arg in args)
            {
                if (query.Length > 0)
                {
                    query.Append(" AND ");
                }
                query.AppendFormat("{0}", QueryParser.Escape(arg));
            }
            foreach (var match in _provider.AsQueryable <TextDocument>().Where(parser.Parse(query.ToString())))
            {
                var tmp = new SearchResult {
                    FriendlyName                 = match.FriendlyName,
                    HostName                     = Environment.MachineName,
                    LocalSourceIdentity          = match.Id,
                    OriginalRemoteSourceIdentity = match.RemoteIdentity
                };
                foreach (var arg in args)
                {
                    tmp.AddStatistic(arg, args.Count(verb => match.SearchText.Contains(verb)).ToString());
                }

                tmp.AddStatistic(match.Id, match.SearchText);
                yield return(tmp);
            }
        }
示例#2
0
 public NuGetQueryParser(FieldMappingQueryParser <LucenePackage> parser)
     : this(parser.MatchVersion, parser.DocumentMapper)
 {
 }