6 #ifndef TURI_ML2_DATA_COLUMN_INDEXER_H_ 7 #define TURI_ML2_DATA_COLUMN_INDEXER_H_ 11 #include <model_server/lib/variant.hpp> 12 #include <core/data/flexible_type/flexible_type.hpp> 13 #include <core/logging/assertions.hpp> 14 #include <core/storage/serialization/serialization_includes.hpp> 15 #include <toolkits/ml_data_2/ml_data_column_modes.hpp> 16 #include <model_server/lib/variant_deep_serialize.hpp> 19 namespace turi {
namespace v2 {
namespace ml_data_internal {
95 ASSERT_MSG(
false,
"Indexing not reversable with this indexer.");
109 ASSERT_MSG(
false,
"Indexing not reversable with this indexer.");
141 virtual std::function<flexible_type(const flexible_type&)>
deindexing_lambda()
const = 0;
148 virtual std::function<flexible_type(const flexible_type&)>
indexing_lambda()
const = 0;
157 const std::map<std::string, variant_type>& creation_options);
159 const std::map<std::string, variant_type>& get_serialization_parameters()
const {
160 return creation_options;
167 virtual std::vector<flexible_type> reset_and_return_values() = 0;
193 std::map<std::string, variant_type> creation_options;
210 size_t version = m->get_version();
214 std::map<std::string, variant_type> serialization_parameters =
215 m->get_serialization_parameters();
218 serialization_parameters[
"version"] =
to_variant(m->get_version());
225 } END_OUT_OF_PLACE_SAVE()
230 arc >> is_not_nullptr;
236 std::map<std::string, variant_type> creation_options;
241 m->load_version(arc, version);
244 m = std::shared_ptr<v2::ml_data_internal::column_indexer>(
nullptr);
246 } END_OUT_OF_PLACE_LOAD()
#define BEGIN_OUT_OF_PLACE_LOAD(arc, tname, tval)
Macro to make it easy to define out-of-place loads.
The serialization input archive object which, provided with a reference to an istream, will read from the istream, providing deserialization capabilities.
virtual size_t indexed_column_size() const =0
std::map< std::string, flexible_type > options
virtual void insert_values_into_index(const std::vector< flexible_type > &features)
void variant_deep_load(variant_type &v, iarchive &iarc)
virtual void save_impl(turi::oarchive &oarc) const =0
void variant_deep_save(const variant_type &v, oarchive &oarc)
virtual void set_values(std::vector< flexible_type > &&values)=0
virtual std::shared_ptr< column_indexer > create_cleared_copy() const =0
virtual size_t map_value_to_index(size_t thread_idx, const flexible_type &feature)=0
virtual flexible_type map_index_to_value(size_t idx) const
virtual size_t get_version() const =0
virtual std::function< flexible_type(const flexible_type &)> indexing_lambda() const =0
virtual size_t immutable_map_value_to_index(const flexible_type &feature) const =0
virtual std::set< flex_type_enum > extract_key_types() const
variant_type to_variant(const T &f)
static std::shared_ptr< column_indexer > factory_create(const std::map< std::string, variant_type > &creation_options)
virtual void finalize()=0
virtual void load_version(turi::iarchive &iarc, size_t version)=0
std::set< T > values(const std::map< Key, T > &map)
virtual void initialize()=0
The serialization output archive object which, provided with a reference to an ostream, will write to the ostream, providing serialization capabilities.
virtual std::function< flexible_type(const flexible_type &)> deindexing_lambda() const =0
flex_type_enum original_column_type
#define BEGIN_OUT_OF_PLACE_SAVE(arc, tname, tval)
Macro to make it easy to define out-of-place saves.