|
|
@@ -54,8 +54,8 @@ public class PrecisionAtKTests extends ESTestCase {
|
|
|
rated.add(createRatedDoc("test", "0", RELEVANT_RATING_1));
|
|
|
EvalQueryQuality evaluated = (new PrecisionAtK()).evaluate("id", toSearchHits(rated, "test"), rated);
|
|
|
assertEquals(1, evaluated.getQualityLevel(), 0.00001);
|
|
|
- assertEquals(1, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
- assertEquals(1, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRetrieved());
|
|
|
+ assertEquals(1, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
+ assertEquals(1, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRetrieved());
|
|
|
}
|
|
|
|
|
|
public void testPrecisionAtFiveIgnoreOneResult() {
|
|
|
@@ -67,8 +67,8 @@ public class PrecisionAtKTests extends ESTestCase {
|
|
|
rated.add(createRatedDoc("test", "4", IRRELEVANT_RATING_0));
|
|
|
EvalQueryQuality evaluated = (new PrecisionAtK()).evaluate("id", toSearchHits(rated, "test"), rated);
|
|
|
assertEquals((double) 4 / 5, evaluated.getQualityLevel(), 0.00001);
|
|
|
- assertEquals(4, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
- assertEquals(5, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRetrieved());
|
|
|
+ assertEquals(4, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
+ assertEquals(5, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRetrieved());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -86,8 +86,8 @@ public class PrecisionAtKTests extends ESTestCase {
|
|
|
PrecisionAtK precisionAtN = new PrecisionAtK(2, false, 5);
|
|
|
EvalQueryQuality evaluated = precisionAtN.evaluate("id", toSearchHits(rated, "test"), rated);
|
|
|
assertEquals((double) 3 / 5, evaluated.getQualityLevel(), 0.00001);
|
|
|
- assertEquals(3, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
- assertEquals(5, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRetrieved());
|
|
|
+ assertEquals(3, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
+ assertEquals(5, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRetrieved());
|
|
|
}
|
|
|
|
|
|
public void testPrecisionAtFiveCorrectIndex() {
|
|
|
@@ -100,8 +100,8 @@ public class PrecisionAtKTests extends ESTestCase {
|
|
|
// the following search hits contain only the last three documents
|
|
|
EvalQueryQuality evaluated = (new PrecisionAtK()).evaluate("id", toSearchHits(rated.subList(2, 5), "test"), rated);
|
|
|
assertEquals((double) 2 / 3, evaluated.getQualityLevel(), 0.00001);
|
|
|
- assertEquals(2, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
- assertEquals(3, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRetrieved());
|
|
|
+ assertEquals(2, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
+ assertEquals(3, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRetrieved());
|
|
|
}
|
|
|
|
|
|
public void testIgnoreUnlabeled() {
|
|
|
@@ -115,15 +115,15 @@ public class PrecisionAtKTests extends ESTestCase {
|
|
|
|
|
|
EvalQueryQuality evaluated = (new PrecisionAtK()).evaluate("id", searchHits, rated);
|
|
|
assertEquals((double) 2 / 3, evaluated.getQualityLevel(), 0.00001);
|
|
|
- assertEquals(2, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
- assertEquals(3, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRetrieved());
|
|
|
+ assertEquals(2, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
+ assertEquals(3, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRetrieved());
|
|
|
|
|
|
// also try with setting `ignore_unlabeled`
|
|
|
PrecisionAtK prec = new PrecisionAtK(1, true, 10);
|
|
|
evaluated = prec.evaluate("id", searchHits, rated);
|
|
|
assertEquals((double) 2 / 2, evaluated.getQualityLevel(), 0.00001);
|
|
|
- assertEquals(2, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
- assertEquals(2, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRetrieved());
|
|
|
+ assertEquals(2, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
+ assertEquals(2, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRetrieved());
|
|
|
}
|
|
|
|
|
|
public void testNoRatedDocs() throws Exception {
|
|
|
@@ -134,23 +134,23 @@ public class PrecisionAtKTests extends ESTestCase {
|
|
|
}
|
|
|
EvalQueryQuality evaluated = (new PrecisionAtK()).evaluate("id", hits, Collections.emptyList());
|
|
|
assertEquals(0.0d, evaluated.getQualityLevel(), 0.00001);
|
|
|
- assertEquals(0, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
- assertEquals(5, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRetrieved());
|
|
|
+ assertEquals(0, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
+ assertEquals(5, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRetrieved());
|
|
|
|
|
|
// also try with setting `ignore_unlabeled`
|
|
|
PrecisionAtK prec = new PrecisionAtK(1, true, 10);
|
|
|
evaluated = prec.evaluate("id", hits, Collections.emptyList());
|
|
|
assertEquals(0.0d, evaluated.getQualityLevel(), 0.00001);
|
|
|
- assertEquals(0, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
- assertEquals(0, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRetrieved());
|
|
|
+ assertEquals(0, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
+ assertEquals(0, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRetrieved());
|
|
|
}
|
|
|
|
|
|
public void testNoResults() throws Exception {
|
|
|
SearchHit[] hits = new SearchHit[0];
|
|
|
EvalQueryQuality evaluated = (new PrecisionAtK()).evaluate("id", hits, Collections.emptyList());
|
|
|
assertEquals(0.0d, evaluated.getQualityLevel(), 0.00001);
|
|
|
- assertEquals(0, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
- assertEquals(0, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRetrieved());
|
|
|
+ assertEquals(0, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRelevantRetrieved());
|
|
|
+ assertEquals(0, ((PrecisionAtK.Detail) evaluated.getMetricDetails()).getRetrieved());
|
|
|
}
|
|
|
|
|
|
public void testParseFromXContent() throws IOException {
|