In Lucene, divergence from randomness model is implemented as DFRSimilarity. It's made up of three components: BasicModel, AfterEffect, and Normalization. BasicModel is a model of information content, AfterEffect is the first normalization, and Normalization is second (length) normalization. Here is an excerpt from Lucene's Javadoc on DFRSimilarity's components:
BasicModel: This is a basic model of information content:
BasicModelBE
: This is the limiting form of Bose-EinsteinBasicModelG
: This is the geometric approximation of Bose-EinsteinBasicModelP
: This is the Poisson approximation of the BinomialBasicModelD
: This is the divergence approximation of the BinomialBasicModelIn
: This is the inverse document frequencyBasicModelIne
: This is the inverse expected document frequency (mixture of Poisson and IDF)BasicModelIF
: This is the inverse term frequency (approximation of I(ne))
AfterEffect: This is the first normalization of information...