package ivory.pwsim.score; public class Bm25S extends ScoringModel { public float computeScore(int qtf, int dtf, int qlen, int dlen) { float idf = (float) Math.log((mDocCount - mDF + 0.5f) / (mDF + 0.5f)); return qtf / (qtf + 0.5f + 1.5f * qlen / mAvgDocLength) * dtf / (dtf + 0.5f + 1.5f * dlen / mAvgDocLength) * idf; } public float computeDocumentWeight(int dtf, int dlen) { float idf = (float) Math.sqrt(Math.log((mDocCount - mDF + 0.5f) / (mDF + 0.5f))); return dtf / (dtf + 0.5f + 1.5f * dlen / mAvgDocLength) * idf; } public float computeQueryWeight(int qtf, int qlen) { float idf = (float) Math.sqrt(Math.log((mDocCount - mDF + 0.5f) / (mDF + 0.5f))); return qtf / (qtf + 0.5f + 1.5f * qlen / mAvgDocLength) * idf; } }