private IEnumerable<FacetHits> SearchInternal(Query query = null, int maxDocPerGroup = DefaultMaxDocPerGroup)
{
if (query == null)
query = new MatchAllDocsQuery();
var queryDocidSet =
new CachingWrapperFilter(new QueryWrapperFilter(query))
.GetDocIdSet(reader)
.AsEnumerable()
.ToList();
var hitsPerFacet = groups.Select(g => new FacetHits(g.Item1, reader, queryDocidSet, g.Item2, maxDocPerGroup)).ToList();
Parallel.ForEach(hitsPerFacet, h => h.Calculate());
return hitsPerFacet;
}