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 Data_, typename Distance_>
28class Searcher {
29public:
33 Searcher() = default;
34 Searcher(Searcher&&) = default;
35 Searcher(const Searcher&) = default;
36 Searcher& operator=(Searcher&&) = default;
37 Searcher& operator=(const Searcher&) = default;
38 virtual ~Searcher() = default;
61 virtual void search(Index_ i, Index_ k, std::vector<Index_>* output_indices, std::vector<Distance_>* output_distances) = 0;
62
78 virtual void search(const Data_* query, Index_ k, std::vector<Index_>* output_indices, std::vector<Distance_>* output_distances) = 0;
79
80public:
86 virtual bool can_search_all() const {
87 return false;
88 }
89
107 virtual Index_ search_all([[maybe_unused]] Index_ i, [[maybe_unused]] Distance_ distance, [[maybe_unused]] std::vector<Index_>* output_indices, [[maybe_unused]] std::vector<Distance_>* output_distances) {
108 throw std::runtime_error("distance-based searches not supported");
109 return 0;
110 }
111
127 virtual Index_ search_all([[maybe_unused]] const Data_* query, [[maybe_unused]] Distance_ distance, [[maybe_unused]] std::vector<Index_>* output_indices, [[maybe_unused]] std::vector<Distance_>* output_distances) {
128 throw std::runtime_error("distance-based searches not supported");
129 return 0;
130 }
131};
132
133}
134
135#endif
Interface for searching nearest-neighbor search indices.
Definition Searcher.hpp:28
virtual bool can_search_all() const
Definition Searcher.hpp:86
virtual Index_ search_all(const Data_ *query, Distance_ distance, std::vector< Index_ > *output_indices, std::vector< Distance_ > *output_distances)
Definition Searcher.hpp:127
virtual Index_ search_all(Index_ i, Distance_ distance, std::vector< Index_ > *output_indices, std::vector< Distance_ > *output_distances)
Definition Searcher.hpp:107
virtual void search(const Data_ *query, Index_ k, std::vector< Index_ > *output_indices, std::vector< Distance_ > *output_distances)=0
virtual void search(Index_ i, Index_ k, std::vector< Index_ > *output_indices, std::vector< Distance_ > *output_distances)=0
Collection of KNN algorithms.
Definition Bruteforce.hpp:24