@@ -24,12 +24,13 @@ std::pair<uint32_t, uint32_t> AbstractIndex::search(const data_type *query, cons
2424
2525template <typename data_type, typename tag_type>
2626size_t AbstractIndex::search_with_tags (const data_type *query, const uint64_t K, const uint32_t L, tag_type *tags,
27- float *distances, std::vector<data_type *> &res_vectors)
27+ float *distances, std::vector<data_type *> &res_vectors, bool use_filters,
28+ const std::string filter_label)
2829{
2930 auto any_query = std::any (query);
3031 auto any_tags = std::any (tags);
3132 auto any_res_vectors = DataVector (res_vectors);
32- return this ->_search_with_tags (any_query, K, L, any_tags, distances, any_res_vectors);
33+ return this ->_search_with_tags (any_query, K, L, any_tags, distances, any_res_vectors, use_filters, filter_label );
3334}
3435
3536template <typename IndexType>
@@ -162,61 +163,53 @@ template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> AbstractIndex::search_w
162163 const DataType &query, const std::string &raw_label, const size_t K, const uint32_t L, uint64_t *indices,
163164 float *distances);
164165
165- template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<float , int32_t >(const float *query, const uint64_t K,
166- const uint32_t L, int32_t *tags,
167- float *distances,
168- std::vector<float *> &res_vectors);
166+ template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<float , int32_t >(
167+ const float *query, const uint64_t K, const uint32_t L, int32_t *tags, float *distances,
168+ std::vector<float *> &res_vectors, bool use_filters, const std::string filter_label);
169169
170- template DISKANN_DLLEXPORT size_t
171- AbstractIndex::search_with_tags< uint8_t , int32_t >( const uint8_t *query, const uint64_t K, const uint32_t L,
172- int32_t *tags, float *distances, std::vector<uint8_t *> &res_vectors);
170+ template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags< uint8_t , int32_t >(
171+ const uint8_t *query, const uint64_t K, const uint32_t L, int32_t *tags, float *distances ,
172+ std::vector<uint8_t *> &res_vectors, bool use_filters, const std::string filter_label );
173173
174- template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<int8_t , int32_t >(const int8_t *query,
175- const uint64_t K, const uint32_t L,
176- int32_t *tags, float *distances,
177- std::vector<int8_t *> &res_vectors);
174+ template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<int8_t , int32_t >(
175+ const int8_t *query, const uint64_t K, const uint32_t L, int32_t *tags, float *distances,
176+ std::vector<int8_t *> &res_vectors, bool use_filters, const std::string filter_label);
178177
179- template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<float , uint32_t >(const float *query, const uint64_t K,
180- const uint32_t L, uint32_t *tags,
181- float *distances,
182- std::vector<float *> &res_vectors);
178+ template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<float , uint32_t >(
179+ const float *query, const uint64_t K, const uint32_t L, uint32_t *tags, float *distances,
180+ std::vector<float *> &res_vectors, bool use_filters, const std::string filter_label);
183181
184182template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<uint8_t , uint32_t >(
185183 const uint8_t *query, const uint64_t K, const uint32_t L, uint32_t *tags, float *distances,
186- std::vector<uint8_t *> &res_vectors);
184+ std::vector<uint8_t *> &res_vectors, bool use_filters, const std::string filter_label );
187185
188- template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<int8_t , uint32_t >(const int8_t *query,
189- const uint64_t K, const uint32_t L,
190- uint32_t *tags, float *distances,
191- std::vector<int8_t *> &res_vectors);
186+ template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<int8_t , uint32_t >(
187+ const int8_t *query, const uint64_t K, const uint32_t L, uint32_t *tags, float *distances,
188+ std::vector<int8_t *> &res_vectors, bool use_filters, const std::string filter_label);
192189
193- template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<float , int64_t >(const float *query, const uint64_t K,
194- const uint32_t L, int64_t *tags,
195- float *distances,
196- std::vector<float *> &res_vectors);
190+ template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<float , int64_t >(
191+ const float *query, const uint64_t K, const uint32_t L, int64_t *tags, float *distances,
192+ std::vector<float *> &res_vectors, bool use_filters, const std::string filter_label);
197193
198- template DISKANN_DLLEXPORT size_t
199- AbstractIndex::search_with_tags< uint8_t , int64_t >( const uint8_t *query, const uint64_t K, const uint32_t L,
200- int64_t *tags, float *distances, std::vector<uint8_t *> &res_vectors);
194+ template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags< uint8_t , int64_t >(
195+ const uint8_t *query, const uint64_t K, const uint32_t L, int64_t *tags, float *distances ,
196+ std::vector<uint8_t *> &res_vectors, bool use_filters, const std::string filter_label );
201197
202- template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<int8_t , int64_t >(const int8_t *query,
203- const uint64_t K, const uint32_t L,
204- int64_t *tags, float *distances,
205- std::vector<int8_t *> &res_vectors);
198+ template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<int8_t , int64_t >(
199+ const int8_t *query, const uint64_t K, const uint32_t L, int64_t *tags, float *distances,
200+ std::vector<int8_t *> &res_vectors, bool use_filters, const std::string filter_label);
206201
207- template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<float , uint64_t >(const float *query, const uint64_t K,
208- const uint32_t L, uint64_t *tags,
209- float *distances,
210- std::vector<float *> &res_vectors);
202+ template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<float , uint64_t >(
203+ const float *query, const uint64_t K, const uint32_t L, uint64_t *tags, float *distances,
204+ std::vector<float *> &res_vectors, bool use_filters, const std::string filter_label);
211205
212206template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<uint8_t , uint64_t >(
213207 const uint8_t *query, const uint64_t K, const uint32_t L, uint64_t *tags, float *distances,
214- std::vector<uint8_t *> &res_vectors);
208+ std::vector<uint8_t *> &res_vectors, bool use_filters, const std::string filter_label );
215209
216- template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<int8_t , uint64_t >(const int8_t *query,
217- const uint64_t K, const uint32_t L,
218- uint64_t *tags, float *distances,
219- std::vector<int8_t *> &res_vectors);
210+ template DISKANN_DLLEXPORT size_t AbstractIndex::search_with_tags<int8_t , uint64_t >(
211+ const int8_t *query, const uint64_t K, const uint32_t L, uint64_t *tags, float *distances,
212+ std::vector<int8_t *> &res_vectors, bool use_filters, const std::string filter_label);
220213
221214template DISKANN_DLLEXPORT void AbstractIndex::search_with_optimized_layout<float >(const float *query, size_t K,
222215 size_t L, uint32_t *indices);
0 commit comments