Currently, MAXSCOREBulkScorer always applies filters in parallel with essential clauses (by intersecting the filter with a heap containing essential clauses in a leap frog fashion).
When the sum of costs of essential clauses is less than the cost of the filter, it would likely be more efficient to "post filter" hits of essential clauses, ie. pull hits of essential clauses into a DocAndScoreBuffer and then remove hits from this buffer that don't match the filter.