From 9a087b2e439e7d63d4de0c2401169f16a71e838f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Proch=C3=A1zka?= <david@prochazka.dev>
Date: Wed, 13 Jan 2021 18:41:51 +0100
Subject: [PATCH] ADD: use getAnswerDistance to speed up approx search

---
 src/mhtree/MHTree.java | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/mhtree/MHTree.java b/src/mhtree/MHTree.java
index ea98761..0380225 100644
--- a/src/mhtree/MHTree.java
+++ b/src/mhtree/MHTree.java
@@ -53,13 +53,17 @@ public class MHTree extends Algorithm implements Serializable {
         while (!queue.isEmpty() && operation.getAnswerCount() < operation.getK()) {
             Node currentNode = queue.poll().getNode();
 
-            if (currentNode.isLeaf())
-                for (LocalAbstractObject obj : currentNode.getObjects())
-                    operation.addToAnswer(obj);
+            if (currentNode.isLeaf()) {
+                for (LocalAbstractObject obj : currentNode.getObjects()) {
+                    if (operation.getAnswerCount() >= operation.getK() && currentNode.getDistance(object) > operation.getAnswerDistance())
+                        continue;
 
-            if (!currentNode.isLeaf())
+                    operation.addToAnswer(obj);
+                }
+            } else {
                 for (Node child : ((InternalNode) currentNode).getChildren())
                     queue.add(new ObjectToNodeDistanceRank(child, object));
+            }
         }
 
         operation.endOperation();
-- 
GitLab