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);
            }
        }
        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);
            }
        }