The new DirectDocValuesFormat is nearly identical to Facet42DVF, except that it stores the addresses in direct int rather than PackedInts. On
LUCENE-5296 we measured the performance of DirectDVF vs Facet42DVF and it improves perf for some queries and have negligible effect for others, as well as RAM consumption isn't much worse. We should remove Facet42DVF and use DirectDVF instead.
I also want to rename Facet46Codec to FacetCodec. There's no need to refactor the class whenever the default codec changes (e.g. from 45 to 46) since it doesn't care about the actual Codec version underneath, it only overrides the DVF used for the facet fields. FacetCodec should take the DVF from the app (so e.g. the facet/ module doesn't depend on codecs/) and be exposed more as a utility Codec rather than a real, versioned, Codec.