예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }