74 lines
2.0 KiB
C++
74 lines
2.0 KiB
C++
#pragma once
|
|
|
|
#include "common_includes.h"
|
|
#include "parameters.h"
|
|
|
|
namespace diskann
|
|
{
|
|
struct IndexFilterParams
|
|
{
|
|
public:
|
|
std::string save_path_prefix;
|
|
std::string label_file;
|
|
std::string tags_file;
|
|
std::string universal_label;
|
|
uint32_t filter_threshold = 0;
|
|
|
|
private:
|
|
IndexFilterParams(const std::string &save_path_prefix, const std::string &label_file,
|
|
const std::string &universal_label, uint32_t filter_threshold)
|
|
: save_path_prefix(save_path_prefix), label_file(label_file), universal_label(universal_label),
|
|
filter_threshold(filter_threshold)
|
|
{
|
|
}
|
|
|
|
friend class IndexFilterParamsBuilder;
|
|
};
|
|
class IndexFilterParamsBuilder
|
|
{
|
|
public:
|
|
IndexFilterParamsBuilder() = default;
|
|
|
|
IndexFilterParamsBuilder &with_save_path_prefix(const std::string &save_path_prefix)
|
|
{
|
|
if (save_path_prefix.empty() || save_path_prefix == "")
|
|
throw ANNException("Error: save_path_prefix can't be empty", -1);
|
|
this->_save_path_prefix = save_path_prefix;
|
|
return *this;
|
|
}
|
|
|
|
IndexFilterParamsBuilder &with_label_file(const std::string &label_file)
|
|
{
|
|
this->_label_file = label_file;
|
|
return *this;
|
|
}
|
|
|
|
IndexFilterParamsBuilder &with_universal_label(const std::string &univeral_label)
|
|
{
|
|
this->_universal_label = univeral_label;
|
|
return *this;
|
|
}
|
|
|
|
IndexFilterParamsBuilder &with_filter_threshold(const std::uint32_t &filter_threshold)
|
|
{
|
|
this->_filter_threshold = filter_threshold;
|
|
return *this;
|
|
}
|
|
|
|
IndexFilterParams build()
|
|
{
|
|
return IndexFilterParams(_save_path_prefix, _label_file, _universal_label, _filter_threshold);
|
|
}
|
|
|
|
IndexFilterParamsBuilder(const IndexFilterParamsBuilder &) = delete;
|
|
IndexFilterParamsBuilder &operator=(const IndexFilterParamsBuilder &) = delete;
|
|
|
|
private:
|
|
std::string _save_path_prefix;
|
|
std::string _label_file;
|
|
std::string _tags_file;
|
|
std::string _universal_label;
|
|
uint32_t _filter_threshold = 0;
|
|
};
|
|
} // namespace diskann
|