(Vec query, int k, BoundedSortedList<ProbailityMatch<V>> list, double x, List<Double> qi)
| 590 | } |
| 591 | |
| 592 | @Override |
| 593 | public void searchKNN(Vec query, int k, BoundedSortedList<ProbailityMatch<V>> list, double x, List<Double> qi) |
| 594 | { |
| 595 | x = dm.dist(p, query, qi, allVecs, distCache); |
| 596 | if(list.size() < k || x < list.get(k-1).getProbability()) |
| 597 | list.add(new ProbailityMatch<V>(x, allVecs.get(this.p))); |
| 598 | double tau = list.get(list.size()-1).getProbability(); |
| 599 | double middle = (this.left_high+this.right_low)*0.5; |
| 600 | |
| 601 | if( x < middle) |
| 602 | { |
| 603 | if(searchInLeft(x, tau) || list.size() < k) |
| 604 | this.left.searchKNN(query, k, list, x, qi); |
| 605 | tau = list.get(list.size()-1).getProbability(); |
| 606 | if(searchInRight(x, tau) || list.size() < k) |
| 607 | this.right.searchKNN(query, k, list, x, qi); |
| 608 | } |
| 609 | else |
| 610 | { |
| 611 | if(searchInRight(x, tau) || list.size() < k) |
| 612 | this.right.searchKNN(query, k, list, x, qi); |
| 613 | tau = list.get(list.size()-1).getProbability(); |
| 614 | if(searchInLeft(x, tau) || list.size() < k) |
| 615 | this.left.searchKNN(query, k, list, x, qi); |
| 616 | } |
| 617 | } |
| 618 | |
| 619 | @Override |
| 620 | public void searchRange(Vec query, double range, List<VecPaired<V, Double>> list, double x, List<Double> qi) |
no test coverage detected