package experiments.evaluation;
import java.util.HashMap;
import org.apache.commons.math.stat.descriptive.SummaryStatistics;
public class M_Precision extends StatisticalMeasure {
private SummaryStatistics sumStats;
private HashMap<Integer, Integer> itemsRetrieved;
private int correctHits;
private double overallRes;
private int overallQueries;
private double queryVal;
public M_Precision() {
super();
sumStats = new SummaryStatistics();
correctHits = 0;
queryVal = 0;
overallRes = 0;
overallQueries = 0;
itemsRetrieved = new HashMap<Integer, Integer>();
classname = new String[3];
classname[0] = "Precision";
classname[1] = "Precision_StandardDeviation";
classname[2] = "Precision_Variance";
}
@Override
public void workQuery(CorrectEntry ce, ResultEntry re) {
if (ce.getDocName().equalsIgnoreCase(re.getDocName())) {
correctHits++;
}
itemsRetrieved.put(re.getDocName().hashCode(), 0);
}
@Override
public void finishQuery(int qryN) {
queryVal = (double) correctHits / (double) itemsRetrieved.size();
overallRes += queryVal;
sumStats.addValue(queryVal);
itemsRetrieved = 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;
}
}