package experiments.evaluation;
public class M_ReciprocalRank extends StatisticalMeasure {
private double overallRank;
private long callups;
private int firstCorrectAnswer;
private double queryValue;
public M_ReciprocalRank() {
super();
overallRank = 0;
callups = 0;
queryValue = 0;
firstCorrectAnswer = Integer.MAX_VALUE;
classname = new String[1];
classname[0] = "ReciprocalRank";
}
@Override
public void workQuery(CorrectEntry ce, ResultEntry re) {
if (ce.getDocName().equalsIgnoreCase(re.getDocName())
&& firstCorrectAnswer > resultIteration) {
firstCorrectAnswer = resultIteration;
}
}
@Override
public void finishQuery(int qryNr) {
callups++;
if (firstCorrectAnswer != Integer.MAX_VALUE) {
queryValue = 1.0 / firstCorrectAnswer;
overallRank += queryValue;
} else {
queryValue = 0;
}
firstCorrectAnswer = Integer.MAX_VALUE;
}
@Override
public double[] getResult() {
double result[] = new double[1];
result[0] = overallRank / callups;
return result;
}
@Override
public double[] getQueryResult() {
double result[] = new double[1];
result[0] = queryValue;
return result;
}
}