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