int totalCount = 0;
Iterable<ScoredMatch> matches = matcher.decode(rawMatches, query.getRoot().getBoostedNorm());
MatchFilter facetFilter = null;
if (query.getFilteringFacets() != null) {
facetFilter = facetingManager.getFacetFilter(query.getFilteringFacets());
}
for (ScoredMatch match : matches) {
if (docFilter.apply(match.getDocId())) {
if (facetFilter == null || facetFilter.matches(match.getDocId(), match.getScore(), query.getNow(), query.getVars())) {
if (query.getRangeFilter() == null || query.getRangeFilter().matches(match.getDocId(), match.getScore(), query.getNow(), query.getVars())) {
rescore(match, query, scoringFunctionIndex);
faceter.computeDocument(match.getDocId());
if (top.size() < n || top.peek().compareTo(match) > 0) {