diff --git a/src/mhtree/MHTree.java b/src/mhtree/MHTree.java index a70232800e72f7c13a30209651909e984b1abeb6..2280488952064972427abb8f4604dcb8477d7e27 100644 --- a/src/mhtree/MHTree.java +++ b/src/mhtree/MHTree.java @@ -51,48 +51,47 @@ public class MHTree extends Algorithm implements Serializable { } public void approxKNN(ApproxKNNQueryOperation operation) { - LocalAbstractObject object = operation.getQueryObject(); + LocalAbstractObject queryObject = operation.getQueryObject(); PriorityQueue<ObjectToNodeDistanceRank> queue = new PriorityQueue<>(); - queue.add(new ObjectToNodeDistanceRank(root, object)); + queue.add(new ObjectToNodeDistanceRank(queryObject, root)); while (!queue.isEmpty()) { - Node currentNode = queue.poll().getNode(); + Node node = queue.poll().getNode(); - if (currentNode.isLeaf()) { - for (LocalAbstractObject obj : currentNode.getObjects()) { - if (operation.getAnswerCount() >= operation.getK() && currentNode.getDistance(object) > operation.getAnswerDistance()) + if (node.isLeaf()) { + for (LocalAbstractObject object : node.getObjects()) { + if (operation.getAnswerCount() >= operation.getK() && object.getDistance(queryObject) > operation.getAnswerDistance()) continue; - operation.addToAnswer(obj); + operation.addToAnswer(object); } if (operation.getAnswerCount() >= operation.getK()) break; } else { - for (Node child : ((InternalNode) currentNode).getChildren()) - queue.add(new ObjectToNodeDistanceRank(child, object)); + for (Node child : ((InternalNode) node).getChildren()) + queue.add(new ObjectToNodeDistanceRank(queryObject, child)); } } operation.endOperation(); } - public boolean insert(InsertOperation operation) throws BucketStorageException { + public void insert(InsertOperation operation) throws BucketStorageException { LocalAbstractObject object = operation.getInsertedObject(); - Node currentNode = root; + Node node = root; - while (!currentNode.isLeaf()) { - currentNode.addObject(object); + while (!node.isLeaf()) { + node.addObject(object); - currentNode = ((InternalNode) currentNode).getNearestChild(object); + node = ((InternalNode) node).getNearestChild(object); } - currentNode.addObject(object); + node.addObject(object); operation.endOperation(BucketErrorCode.OBJECT_INSERTED); - return true; } public void printStatistics() { diff --git a/src/mhtree/ObjectToNodeDistanceRank.java b/src/mhtree/ObjectToNodeDistanceRank.java index 8d5de83a93efeec24e0a802b9360c4373bf9b799..23cf90d85acc6b845b7db072847a695e29bf8720 100644 --- a/src/mhtree/ObjectToNodeDistanceRank.java +++ b/src/mhtree/ObjectToNodeDistanceRank.java @@ -8,7 +8,7 @@ public class ObjectToNodeDistanceRank implements Comparable<ObjectToNodeDistance private final LocalAbstractObject object; private final double distance; - public ObjectToNodeDistanceRank(Node node, LocalAbstractObject object) { + public ObjectToNodeDistanceRank(LocalAbstractObject object, Node node) { this.node = node; this.object = object; this.distance = node.getDistance(object);