public static JToken QuerySearch(NuGetSearcherManager searcherManager, string scheme, string q, bool countOnly, string projectType, string supportedFramework, bool includePrerelease, int skip, int take, bool includeExplanation, bool applyFilter) { IndexSearcher searcher = searcherManager.Get(); try { Query query = MakeQuery(q, searcherManager); TopDocs topDocs; if (applyFilter) { Filter filter = searcherManager.GetFilter(includePrerelease, supportedFramework); //TODO: uncomment these lines when we have an index that contains the appropriate @type field in every document //Filter typeFilter = new CachingWrapperFilter(new TypeFilter("http://schema.nuget.org/schema#NuGetClassicPackage")); //filter = new ChainedFilter(new Filter[] { filter, typeFilter }, ChainedFilter.Logic.AND); topDocs = searcher.Search(query, filter, skip + take); } else { topDocs = searcher.Search(query, skip + take); } return(MakeResult(searcher, scheme, topDocs, skip, take, searcherManager, includeExplanation, query)); } finally { searcherManager.Release(searcher); } }
static JToken AutoCompleteSearch(NuGetSearcherManager searcherManager, string q, string id, string supportedFramework, bool includePrerelease, int skip, int take, bool includeExplanation) { IndexSearcher searcher = searcherManager.Get(); try { Filter filter = searcherManager.GetFilter(includePrerelease, supportedFramework); if (q != null) { Query query = AutoCompleteMakeQuery(q, searcherManager); TopDocs topDocs = searcher.Search(query, filter, skip + take); return(AutoCompleteMakeResult(searcher, topDocs, skip, take, searcherManager, includeExplanation, query)); } else { Query query = new TermQuery(new Term("Id", id.ToLowerInvariant())); TopDocs topDocs = searcher.Search(query, filter, 1); return(AutoCompleteMakeVersionResult(searcherManager, includePrerelease, topDocs)); } } finally { searcherManager.Release(searcher); } }