knncolle_annoy
Annoy nearest neighbors in knncolle
Loading...
Searching...
No Matches
load_annoy_prebuilt.hpp
Go to the documentation of this file.
1#ifndef KNNCOLLE_ANNOY_LOAD_PREBUILT_HPP
2#define KNNCOLLE_ANNOY_LOAD_PREBUILT_HPP
3
4#include "utils.hpp"
5#include "Annoy.hpp"
6
7#include <cstddef>
8#include <stdexcept>
9#include <string>
10#include <filesystem>
11
12#include "knncolle/knncolle.hpp"
13
19namespace knncolle_annoy {
20
42
50inline AnnoyPrebuiltTypes load_annoy_prebuilt_types(const std::filesystem::path& dir) {
51 knncolle::NumericType types[2];
52 knncolle::quick_load(dir / "TYPES", types, 2);
53
54 AnnoyPrebuiltTypes config;
55 config.index = types[0];
56 config.data = types[1];
57 config.distance = knncolle::quick_load_as_string(dir / "DISTANCE");
58
59 return config;
60}
61
97template<
98 typename Index_,
99 typename Data_,
100 typename Distance_,
101 class AnnoyDistance_,
102 typename AnnoyIndex_ = Index_,
103 typename AnnoyData_ = float,
104 class AnnoyRng_ = Annoy::Kiss64Random,
105 class AnnoyThreadPolicy_ = Annoy::AnnoyIndexSingleThreadedBuildPolicy
106>
107auto load_annoy_prebuilt(const std::filesystem::path& dir) {
108 std::size_t ndim;
109 knncolle::quick_load(dir / "NUM_DIM", &ndim, 1);
110 return new AnnoyPrebuilt<Index_, Data_, Distance_, AnnoyDistance_, AnnoyIndex_, AnnoyData_, AnnoyRng_, AnnoyThreadPolicy_>(dir, ndim);
111}
112
113}
114
115#endif
Approximate nearest neighbor search with Annoy.
Definition Annoy.hpp:24
auto load_annoy_prebuilt(const std::filesystem::path &dir)
Definition load_annoy_prebuilt.hpp:107
AnnoyPrebuiltTypes load_annoy_prebuilt_types(const std::filesystem::path &dir)
Definition load_annoy_prebuilt.hpp:50
void quick_load(const std::filesystem::path &path, Input_ *const contents, const Length_ length)
std::string quick_load_as_string(const std::filesystem::path &path)
Template types of a saved Annoy index.
Definition load_annoy_prebuilt.hpp:26
std::string distance
Definition load_annoy_prebuilt.hpp:40
knncolle::NumericType index
Definition load_annoy_prebuilt.hpp:30
knncolle::NumericType data
Definition load_annoy_prebuilt.hpp:35
Utilities for the Annoy wrappers.