4 #include <boost/archive/binary_oarchive.hpp> 5 #include <boost/archive/binary_iarchive.hpp> 6 #include <boost/iostreams/filtering_streambuf.hpp> 7 #include <boost/iostreams/filter/bzip2.hpp> 8 #include <boost/serialization/base_object.hpp> 9 #include <boost/serialization/export.hpp> 10 #include <boost/serialization/map.hpp> 11 #include <boost/serialization/unordered_map.hpp> 12 #include <boost/serialization/vector.hpp> 27 if (table->get_table_index() != 0 || table->get_total_num_of_table() != 1)
30 std::ofstream ofs(filename.c_str(), std::ios::out | std::ios::binary | std::ios::trunc);
32 boost::iostreams::filtering_streambuf<boost::iostreams::output> out;
33 out.push(boost::iostreams::bzip2_compressor());
36 boost::archive::binary_oarchive oa(ofs);
41 std::shared_ptr<genie::table::inv_table>
44 std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary);
48 boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
49 in.push(boost::iostreams::bzip2_decompressor());
52 boost::archive::binary_iarchive ia(ifs);
57 return std::shared_ptr<genie::table::inv_table>(loaded_table);
68 template <
class Archive>
71 ar.register_type(static_cast<genie::table::inv_compr_table*>(
nullptr));
73 _build_status = builded;
81 ar >> inv_list_lowerbound;
82 ar >> inv_list_upperbound;
83 ar >> posting_list_size;
85 ar >> shift_bits_subsequence;
86 ar >> min_value_sequence;
87 ar >> max_value_sequence;
88 ar >> gram_length_sequence;
89 ar >> shift_bits_sequence;
94 template <
class Archive>
97 ar.register_type(static_cast<genie::table::inv_compr_table*>(
nullptr));
99 if (_build_status != builded)
107 ar << _inv_index_map;
108 ar << inv_list_lowerbound;
109 ar << inv_list_upperbound;
110 ar << posting_list_size;
112 ar << shift_bits_subsequence;
113 ar << min_value_sequence;
114 ar << max_value_sequence;
115 ar << gram_length_sequence;
116 ar << shift_bits_sequence;
121 template <
class Archive>
125 ar >> boost::serialization::base_object<inv_table>(*this);
127 ar >> m_isCompressed;
129 ar >> m_uncompressedInvListsMaxLength;
135 template <
class Archive>
139 ar << boost::serialization::base_object<inv_table>(*this);
141 ar << m_isCompressed;
143 ar << m_uncompressedInvListsMaxLength;
The declaration for class inv_table.
std::shared_ptr< genie::table::inv_table > LoadTable(const std::string &filename)
void load(Archive &ar, const unsigned int version)
BOOST_CLASS_VERSION(genie::table::inv_table, 0)
static int log(int level, const char *fmt,...)
Record and print a message into log file.
Record run-time information.
void save(Archive &ar, const unsigned int version) const
void load(Archive &ar, const unsigned int version)
void SaveTable(const std::string &filename, const std::shared_ptr< const genie::table::inv_table > &table)
void save(Archive &ar, const unsigned int version) const
define class inv_compre_table