knncolle
Collection of KNN methods in C++
Loading...
Searching...
No Matches
Searcher.hpp
Go to the documentation of this file.
1#ifndef KNNCOLLE_SEARCHER_HPP
2#define KNNCOLLE_SEARCHER_HPP
3
4#include <vector>
5#include <stdexcept>
6
13namespace knncolle {
14
27template<typename Index_, typename Float_>
28class Searcher {
29public:
33 virtual ~Searcher() = default;
53 virtual void search(Index_ i, Index_ k, std::vector<Index_>* output_indices, std::vector<Float_>* output_distances) = 0;
54
68 virtual void search(const Float_* query, Index_ k, std::vector<Index_>* output_indices, std::vector<Float_>* output_distances) = 0;
69
70public:
76 virtual bool can_search_all() const {
77 return false;
78 }
79
97 virtual Index_ search_all([[maybe_unused]] Index_ i, [[maybe_unused]] Float_ distance, [[maybe_unused]] std::vector<Index_>* output_indices, [[maybe_unused]] std::vector<Float_>* output_distances) {
98 throw std::runtime_error("distance-based searches not supported");
99 return 0;
100 }
101
117 virtual Index_ search_all([[maybe_unused]] const Float_* query, [[maybe_unused]] Float_ distance, [[maybe_unused]] std::vector<Index_>* output_indices, [[maybe_unused]] std::vector<Float_>* output_distances) {
118 throw std::runtime_error("distance-based searches not supported");
119 return 0;
120 }
121};
122
123}
124
125#endif
Interface for searching nearest-neighbor search indices.
Definition Searcher.hpp:28
virtual void search(Index_ i, Index_ k, std::vector< Index_ > *output_indices, std::vector< Float_ > *output_distances)=0
virtual bool can_search_all() const
Definition Searcher.hpp:76
virtual void search(const Float_ *query, Index_ k, std::vector< Index_ > *output_indices, std::vector< Float_ > *output_distances)=0
virtual Index_ search_all(const Float_ *query, Float_ distance, std::vector< Index_ > *output_indices, std::vector< Float_ > *output_distances)
Definition Searcher.hpp:117
virtual Index_ search_all(Index_ i, Float_ distance, std::vector< Index_ > *output_indices, std::vector< Float_ > *output_distances)
Definition Searcher.hpp:97
Collection of KNN algorithms.
Definition Bruteforce.hpp:22