@Override public PhRangeQuery<T> rangeQuery(double dist, PhDistance optionalDist, long...center) { PhFilterDistance filter = new PhFilterDistance(); if (optionalDist == null) { optionalDist = PhDistanceL.THIS; } filter.set(center, optionalDist, dist); PhQuery<T> q = new PhIteratorNoGC<T>(this, filter); PhRangeQuery<T> qr = new PhRangeQuery<>(q, this, optionalDist, filter); qr.reset(dist, center); return qr; }
public PhRangeQuery<T> reset(double range, long... center) { filter.set(center, dist, range); dist.toMBB(range, center, min, max); q.reset(min, max); return this; }
public PhQueryKnnMbbPP(PhTree13<T> pht) { this.dims = pht.getDim(); this.mbbMin = new long[dims]; this.mbbMax = new long[dims]; this.pht = pht; this.checker = new PhFilterDistance(); this.iter = new PhIteratorNoGC<>(pht, checker); }
private final boolean findNeighbours(double maxDist, int nMin, long[] val) { results.maxDistance = maxDist; checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax); iter.resetAndRun(pht.getRoot(), mbbMin, mbbMax, Integer.MAX_VALUE); if (results.size() < nMin) { //too small, we need a bigger range return false; } return true; }
public PhQueryKnnMbbPP(PhTree11<T> pht) { this.dims = pht.getDim(); this.mbbMin = new long[dims]; this.mbbMax = new long[dims]; this.pht = pht; this.checker = new PhFilterDistance(); this.iter = new PhIteratorNoGC<>(pht, checker); }
@Override public PhRangeQuery<T> rangeQuery(double dist, PhDistance optionalDist, long...center) { PhFilterDistance filter = new PhFilterDistance(); if (optionalDist == null) { optionalDist = PhDistanceL.THIS; } filter.set(center, optionalDist, dist); PhQuery<T> q = new PhIteratorNoGC<>(this, filter); PhRangeQuery<T> qr = new PhRangeQuery<>(q, this, optionalDist, filter); qr.reset(dist, center); return qr; }
private final boolean findNeighbours(double maxDist, int nMin, long[] val) { results.maxDistance = maxDist; checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax); iter.resetAndRun(pht.getRoot(), mbbMin, mbbMax, Integer.MAX_VALUE); if (results.size() < nMin) { //too small, we need a bigger range return false; } return true; }
public PhQueryKnnMbbPP(PhTree8<T> pht) { this.DIM = pht.getDim(); this.mbbMin = new long[DIM]; this.mbbMax = new long[DIM]; this.pht = pht; this.checker = new PhFilterDistance(); this.itEx = new PhIteratorNoGC<>(pht, checker); }
@Override public PhRangeQuery<T> rangeQuery(double dist, PhDistance optionalDist, long...center) { PhFilterDistance filter = new PhFilterDistance(); if (optionalDist == null) { optionalDist = PhDistanceL.THIS; } filter.set(center, optionalDist, dist); PhQuery<T> q = new PhIteratorNoGC<>(this, filter); PhRangeQuery<T> qr = new PhRangeQuery<>(q, this, optionalDist, filter); qr.reset(dist, center); return qr; }
final int CONSOLIDATION_INTERVAL = 10; clearEntries(); checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax); itEx.reset(mbbMin, mbbMax); checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax); maxDist = consolidate(nMin, EPS, maxDist); checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax);
/** * Create a new kNN/NNS search instance. * @param pht the parent tree */ public PhQueryKnnMbbPPList(PhTree11<T> pht) { this.dims = pht.getDim(); this.mbbMin = new long[dims]; this.mbbMax = new long[dims]; this.pht = pht; this.checker = new PhFilterDistance(); this.results = new KnnResultList(dims); this.iter = new NodeIteratorListReuse<>(dims, results); this.niBuffer = new long[dims]; ni = new NodeIteratorFullNoGC<>(dims, niBuffer); }
@Override public PhRangeQuery<T> rangeQuery(double dist, PhDistance optionalDist, long...center) { PhFilterDistance filter = new PhFilterDistance(); if (optionalDist == null) { optionalDist = PhDistanceL.THIS; } filter.set(center, optionalDist, dist); PhQuery<T> q = new PhIteratorNoGC<>(this, filter); PhRangeQuery<T> qr = new PhRangeQuery<>(q, this, optionalDist, filter); qr.reset(dist, center); return qr; }
final int CONSOLIDATION_INTERVAL = 10; clearEntries(); checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax); iter.reset(mbbMin, mbbMax); checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax); iter.adjustMinMax(); maxDist = consolidate(nMin, EPS, maxDist); checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax); iter.adjustMinMax();
/** * Create a new kNN/NNS search instance. * @param pht the parent tree */ public PhQueryKnnMbbPPList(PhTree13<T> pht) { this.dims = pht.getDim(); this.mbbMin = new long[dims]; this.mbbMax = new long[dims]; this.pht = pht; this.checker = new PhFilterDistance(); this.results = new KnnResultList(dims); this.iter = new NodeIteratorListReuse<>(dims, results); this.niBuffer = new long[dims]; ni = new NodeIteratorFullNoGC<>(dims, niBuffer); }
@Override public PhRangeQuery<T> rangeQuery(double dist, PhDistance optionalDist, long...center) { PhFilterDistance filter = new PhFilterDistance(); if (optionalDist == null) { optionalDist = PhDistanceL.THIS; } filter.set(center, optionalDist, dist); PhQuery<T> q = new PhIteratorNoGC<>(this, filter); PhRangeQuery<T> qr = new PhRangeQuery<>(q, this, optionalDist, filter); qr.reset(dist, center); return qr; }
final int CONSOLIDATION_INTERVAL = 10; clearEntries(); checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax); iter.reset(mbbMin, mbbMax); checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax); iter.adjustMinMax(); maxDist = consolidate(nMin, EPS, maxDist); checker.set(val, distance, maxDist); distance.toMBB(maxDist, val, mbbMin, mbbMax); iter.adjustMinMax();
PhEntryDist<T> e = results.getFreeEntry(); e.setCopyKey(val, pht.get(val), 0); checker.set(val, distance, Double.MAX_VALUE); results.phOffer(e); return; PhEntryDist<T> e2 = results.getFreeEntry(); e2.set(e, distance.dist(val, e.getKey())); checker.set(val, distance, Double.MAX_VALUE); results.phOffer(e2);
PhEntryDist<T> e = results.getFreeEntry(); e.setCopyKey(val, pht.get(val), 0); checker.set(val, distance, Double.MAX_VALUE); results.phOffer(e); return; PhEntryDist<T> e2 = results.getFreeEntry(); e2.set(e, distance.dist(val, e.getKey())); checker.set(val, distance, Double.MAX_VALUE); results.phOffer(e2);