public static async Task Segments(IOwinContext context, SearcherManager searcherManager)
        {
            searcherManager.MaybeReopen();

            IndexSearcher searcher = searcherManager.Get();

            try
            {
                IndexReader indexReader = searcher.IndexReader;

                JArray segments = new JArray();
                foreach (ReadOnlySegmentReader segmentReader in indexReader.GetSequentialSubReaders())
                {
                    JObject segmentInfo = new JObject();
                    segmentInfo.Add("segment", segmentReader.SegmentName);
                    segmentInfo.Add("documents", segmentReader.NumDocs());
                    segments.Add(segmentInfo);
                }

                await ServiceHelpers.WriteResponse(context, System.Net.HttpStatusCode.OK, segments);
            }
            finally
            {
                searcherManager.Release(searcher);
            }
        }
 static string GetIndexName(SearcherManager searcherManager)
 {
     //TODO: consolidate when we combine the SearcherManager types
     if (searcherManager is NuGetSearcherManager)
     {
         return(((NuGetSearcherManager)searcherManager).IndexName);
     }
     if (searcherManager is SecureSearcherManager)
     {
         return(((SecureSearcherManager)searcherManager).IndexName);
     }
     return(string.Empty);
 }
 static string GetLastReopen(SearcherManager searcherManager)
 {
     //TODO: consolidate when we combine the SearcherManager types
     if (searcherManager is NuGetSearcherManager)
     {
         return(((NuGetSearcherManager)searcherManager).LastReopen.ToString("o"));
     }
     if (searcherManager is SecureSearcherManager)
     {
         return(((SecureSearcherManager)searcherManager).LastReopen.ToString("o"));
     }
     return(string.Empty);
 }
        public static async Task Stats(IOwinContext context, SearcherManager searcherManager)
        {
            searcherManager.MaybeReopen();

            IndexSearcher searcher = searcherManager.Get();

            try
            {
                IndexReader indexReader = searcher.IndexReader;

                JObject result = new JObject();
                result.Add("numDocs", indexReader.NumDocs());
                result.Add("indexName", GetIndexName(searcherManager));
                result.Add("lastReopen", GetLastReopen(searcherManager));
                result.Add("commitUserData", GetCommitUserData(indexReader));

                await ServiceHelpers.WriteResponse(context, System.Net.HttpStatusCode.OK, result);
            }
            finally
            {
                searcherManager.Release(searcher);
            }
        }