diff --git a/src/mhtree/InternalNode.java b/src/mhtree/InternalNode.java index c7869400d59b3c2f749de35f8d3209a8744970c5..4b961df514c9ad55bbc11669590eed719ca46b0a 100644 --- a/src/mhtree/InternalNode.java +++ b/src/mhtree/InternalNode.java @@ -17,8 +17,8 @@ public class InternalNode extends Node implements Serializable { private final List<Node> children; - InternalNode(PrecomputedDistances distances, InsertType insertType) { - super(distances, insertType); + InternalNode(PrecomputedDistances distances, InsertType insertType, DistanceMeasure distanceMeasure) { + super(distances, insertType, distanceMeasure); children = new ArrayList<>(); } @@ -31,7 +31,7 @@ public class InternalNode extends Node implements Serializable { } public Node getNearestChild(LocalAbstractObject object) { - Map<Node, Float> nodeToObjectDistance = children.stream() + Map<Node, Double> nodeToObjectDistance = children.stream() .collect(Collectors.toMap(Function.identity(), node -> node.getDistance(object))); return Collections.min(nodeToObjectDistance.entrySet(), Map.Entry.comparingByValue()).getKey(); diff --git a/src/mhtree/LeafNode.java b/src/mhtree/LeafNode.java index 49ea70982f4c370f473fa25e5c1751905610ebf2..d720c984167e4a7b53c034f9174afd19409a86a5 100644 --- a/src/mhtree/LeafNode.java +++ b/src/mhtree/LeafNode.java @@ -19,8 +19,8 @@ public class LeafNode extends Node implements Serializable { private static final long serialVersionUID = 1L; private LocalBucket bucket; - LeafNode(PrecomputedDistances distances, LocalBucket bucket, InsertType insertType) throws BucketStorageException { - super(distances, insertType); + LeafNode(PrecomputedDistances distances, LocalBucket bucket, InsertType insertType, DistanceMeasure distanceMeasure) throws BucketStorageException { + super(distances, insertType, distanceMeasure); this.bucket = bucket; this.bucket.addObjects(distances.getObjects()); diff --git a/src/mhtree/MHTree.java b/src/mhtree/MHTree.java index f7290cded79cef27a62cccb71fe45339ade6d630..27fe6e7f83ca5754b55125db14574290904bed58 100644 --- a/src/mhtree/MHTree.java +++ b/src/mhtree/MHTree.java @@ -1,6 +1,5 @@ package mhtree; -import cz.muni.fi.disa.similarityoperators.cover.AbstractRepresentation.PrecomputedDistances; import messif.algorithms.Algorithm; import messif.buckets.BucketDispatcher; import messif.buckets.BucketErrorCode; @@ -36,20 +35,20 @@ public class MHTree extends Algorithm implements Serializable { "arity", "number of threads used in precomputing distances", "insert type", + "distance measure", "storage class for buckets", "storage class parameters" }) - public MHTree(List<LocalAbstractObject> objects, int leafCapacity, int arity, int numberOfThreads, InsertType insertType, Class<? extends LocalBucket> defaultBucketClass, Map<String, Object> bucketClassParams) throws BucketStorageException { + public MHTree(List<LocalAbstractObject> objects, int leafCapacity, int arity, InsertType insertType, DistanceMeasure distanceMeasure, Class<? extends LocalBucket> defaultBucketClass, Map<String, Object> bucketClassParams) throws BucketStorageException { super("MH-Tree"); this.leafCapacity = leafCapacity; this.arity = arity; this.insertType = insertType; - bucketDispatcher = new BucketDispatcher(Integer.MAX_VALUE, Long.MAX_VALUE, leafCapacity, 0, false, defaultBucketClass, bucketClassParams); - PrecomputedDistances.COMPUTATION_THREADS = numberOfThreads; + bucketDispatcher = new BucketDispatcher(Integer.MAX_VALUE, Long.MAX_VALUE, leafCapacity, 0, false, defaultBucketClass, bucketClassParams); - root = new BuildTree(objects, leafCapacity, arity, insertType, bucketDispatcher).getRoot(); + root = new BuildTree(objects, leafCapacity, arity, insertType, distanceMeasure, bucketDispatcher).getRoot(); } public void approxKNN(ApproxKNNQueryOperation operation) {