I've been working on some performance tuning for Alfresco and found that the main query is being executed in the first and second phase of distributed search when there are facet refinements.
The code where this happens is in line 347 of the QueryComponent (trunk). This turns out be pretty expensive in Alfresco's use case. We already have this DocSet in the first phase but we currently don't cache DocSets for facets. Perhaps it's time to consider doing this. Anybody have any thoughts or objections?