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
77 virtual void search(const Data_* query, Index_ k, std::vector<Index_>* output_indices, std::vector<Distance_>* output_distances) = 0;
78
79public:
85 virtual bool can_search_all() const {
86 return false;
87 }
88
106 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) {
107 throw std::runtime_error("distance-based searches not supported");
108 return 0;
109 }
110
126 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) {
127 throw std::runtime_error("distance-based searches not supported");
128 return 0;
129 }
130};
131
132}
133
134#endif
Interface for searching nearest-neighbor search indices.
Definition Searcher.hpp:28
virtual bool can_search_all() const
Definition Searcher.hpp:85
virtual Index_ search_all(const Data_ *query, Distance_ distance, std::vector< Index_ > *output_indices, std::vector< Distance_ > *output_distances)
Definition Searcher.hpp:126
virtual Index_ search_all(Index_ i, Distance_ distance, std::vector< Index_ > *output_indices, std::vector< Distance_ > *output_distances)
Definition Searcher.hpp:106
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:23