I started looking through this, and it looks very nice, though I do see one slight nit to pick. I may be reading this incorrectly, but two parameters in rangeCount appear to be transposed. In SimpleFacets.java, the rangeCount method uses:
new ConstantScoreRangeQuery(field,low,high,iHigh,iLow) but the Lucene javadocs suggest it is actually new ConstantScoreRangeQuery(field,low,high,iLow,iHigh) The iLow and iHigh parameters seem to be reversed. Thanks, Greg