@@ -32,13 +32,18 @@ class IndexWriteParameters
3232 const bool diverse_index;
3333 const std::string seller_file;
3434 const uint32_t num_diverse_build;
35+ const bool attribute_diversity;
36+ const std::string attribute_file;
37+ const float attr_dist_threshold;
3538
3639 IndexWriteParameters (const uint32_t search_list_size, const uint32_t max_degree, const bool saturate_graph,
3740 const uint32_t max_occlusion_size, const float alpha, const uint32_t num_threads,
38- const uint32_t filter_list_size, bool diverse_index, const std::string& seller_file, uint32_t num_diverse_build)
41+ const uint32_t filter_list_size, bool diverse_index, const std::string& seller_file, uint32_t num_diverse_build,
42+ bool attribute_diversity, const std::string& attribute_file, float attr_dist_threshold)
3943 : search_list_size(search_list_size), max_degree(max_degree), saturate_graph(saturate_graph),
4044 max_occlusion_size (max_occlusion_size), alpha(alpha), num_threads(num_threads),
41- filter_list_size(filter_list_size), diverse_index(diverse_index), seller_file(seller_file), num_diverse_build(num_diverse_build)
45+ filter_list_size(filter_list_size), diverse_index(diverse_index), seller_file(seller_file), num_diverse_build(num_diverse_build),
46+ attribute_diversity(attribute_diversity), attribute_file(attribute_file), attr_dist_threshold(attr_dist_threshold)
4247 {
4348 }
4449
@@ -100,6 +105,24 @@ class IndexWriteParametersBuilder
100105 return *this ;
101106 }
102107
108+ IndexWriteParametersBuilder& with_attribute_diversity (const bool attribute_diversity)
109+ {
110+ _attribute_diversity = attribute_diversity;
111+ return *this ;
112+ }
113+
114+ IndexWriteParametersBuilder& with_attr_dist_threshold (const float attr_dist_threshold)
115+ {
116+ _attr_dist_threshold = attr_dist_threshold;
117+ return *this ;
118+ }
119+
120+ IndexWriteParametersBuilder& with_attribute_file (const std::string attribute_file)
121+ {
122+ _attribute_file = attribute_file;
123+ return *this ;
124+ }
125+
103126 IndexWriteParametersBuilder &with_alpha (const float alpha)
104127 {
105128 _alpha = alpha;
@@ -121,13 +144,16 @@ class IndexWriteParametersBuilder
121144 IndexWriteParameters build () const
122145 {
123146 return IndexWriteParameters (_search_list_size, _max_degree, _saturate_graph, _max_occlusion_size, _alpha,
124- _num_threads, _filter_list_size, _diverse_index, _seller_file, _num_diverse_build);
147+ _num_threads, _filter_list_size, _diverse_index, _seller_file, _num_diverse_build,
148+ _attribute_diversity, _attribute_file, _attr_dist_threshold);
125149 }
126150
127151 IndexWriteParametersBuilder (const IndexWriteParameters &wp)
128152 : _search_list_size(wp.search_list_size), _max_degree(wp.max_degree),
129153 _max_occlusion_size (wp.max_occlusion_size), _saturate_graph(wp.saturate_graph), _alpha(wp.alpha),
130- _filter_list_size(wp.filter_list_size)
154+ _num_threads(wp.num_threads), _filter_list_size(wp.filter_list_size), _diverse_index(wp.diverse_index),
155+ _seller_file(wp.seller_file), _num_diverse_build(wp.num_diverse_build), _attribute_diversity(wp.attribute_diversity),
156+ _attribute_file(wp.attribute_file), _attr_dist_threshold(wp.attr_dist_threshold)
131157 {
132158 }
133159 IndexWriteParametersBuilder (const IndexWriteParametersBuilder &) = delete;
@@ -143,7 +169,10 @@ class IndexWriteParametersBuilder
143169 uint32_t _filter_list_size{defaults::FILTER_LIST_SIZE};
144170 bool _diverse_index{ defaults::DIVERSE_INDEX };
145171 std::string _seller_file{ defaults::EMPTY_STRING };
146- uint32_t _num_diverse_build{ defaults::NUM_DIVERSE_BUILD };
172+ uint32_t _num_diverse_build{ defaults::NUM_DIVERSE_BUILD };
173+ bool _attribute_diversity{ defaults::ATTRIBUTE_DIVERSITY };
174+ std::string _attribute_file{ defaults::EMPTY_STRING };
175+ float _attr_dist_threshold{ defaults::ATTR_DIST_THRESHOLD };
147176};
148177
149178struct IndexLoadParams
0 commit comments