Skip to content
Snippets Groups Projects
Verified Commit 00b7b116 authored by David Procházka's avatar David Procházka
Browse files

ADD: ApproxKNN recall measurement

parent 34486e6c
No related branches found
No related tags found
No related merge requests found
......@@ -5,15 +5,14 @@ import messif.buckets.BucketDispatcher;
import messif.buckets.BucketErrorCode;
import messif.buckets.BucketStorageException;
import messif.buckets.LocalBucket;
import messif.objects.AbstractObject;
import messif.objects.LocalAbstractObject;
import messif.operations.data.InsertOperation;
import messif.operations.query.ApproxKNNQueryOperation;
import messif.operations.query.KNNQueryOperation;
import java.io.Serializable;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.*;
public class MHTree extends Algorithm implements Serializable {
......@@ -121,6 +120,27 @@ public class MHTree extends Algorithm implements Serializable {
System.out.println("Maximum number of objects: " + statistics.getMax());
}
public double measureRecall(ApproxKNNQueryOperation approxKNNOperation) {
if (approxKNNOperation.getAnswerCount() == 0) return 0d;
KNNQueryOperation KNNOperation = new KNNQueryOperation(approxKNNOperation.getQueryObject(), approxKNNOperation.getK());
KNN(KNNOperation);
int trueKNNCount = 0;
for (Iterator<AbstractObject> KNNIt = KNNOperation.getAnswerObjects(); KNNIt.hasNext(); )
for (Iterator<AbstractObject> approxKNNIt = approxKNNOperation.getAnswerObjects(); approxKNNIt.hasNext(); )
if (KNNIt.next().getLocatorURI().equals(approxKNNIt.next().getLocatorURI()))
trueKNNCount++;
return trueKNNCount / (double) KNNOperation.getAnswerCount();
}
private void KNN(KNNQueryOperation operation) {
root.getObjects().forEach(operation::addToAnswer);
operation.endOperation();
}
@Override
public String toString() {
return "MHTree{" +
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment