package experiments.evaluation;
import java.util.HashMap;
import org.apache.commons.math.stat.descriptive.SummaryStatistics;
public class M_Recall extends StatisticalMeasure {
private SummaryStatistics sumStats;
private int correctHits;
private int overallQueries;
private HashMap<Integer, Integer> map;
private double overallRes;
private double queryVal;
public M_Recall() {
super();
sumStats = new SummaryStatistics();
queryVal = 0;
overallQueries = 0;
correctHits = 0;
overallRes = 0;
classname = new String[3];
classname[0] = "Recall";
classname[1] = "Recall_StandardDeviation";
classname[2] = "Recall_Variance";
map = new HashMap<Integer, Integer>();
}
@Override
public void workQuery(CorrectEntry ce, ResultEntry re) {
if (ce.getDocName().equalsIgnoreCase(re.getDocName())) {
correctHits++;
}
map.put(ce.getDocName().hashCode(), 0);
}
@Override
public void finishQuery(int qryN) {
queryVal = (double) correctHits / (double) map.size();
overallRes += queryVal;
sumStats.addValue(queryVal);
map = new HashMap<Integer, Integer>();
correctHits = 0;
overallQueries++;
}
@Override
public double[] getResult() {
double[] result = new double[3];
result[0] = overallRes / overallQueries;
result[1] = sumStats.getStandardDeviation();
result[2] = sumStats.getVariance();
return result;
}
@Override
public double[] getQueryResult() {
double[] result = new double[3];
result[0] = queryVal;
result[1] = 0;
result[2] = 0;
return result;
}
}