Files
yichuan520030910320 46f6cc100b Initial commit
2025-06-30 09:05:05 +00:00

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