jubatus_core  0.1.2
Jubatus: Online machine learning framework for distributed environment
Public Member Functions | Private Attributes | List of all members
jubatus::core::storage::bit_index_storage Class Reference

#include <bit_index_storage.hpp>

Inheritance diagram for jubatus::core::storage::bit_index_storage:
Inheritance graph
Collaboration diagram for jubatus::core::storage::bit_index_storage:
Collaboration graph

Public Member Functions

 bit_index_storage ()
 
void clear ()
 
void get_all_row_ids (std::vector< std::string > &ids) const
 
void get_diff (bit_table_t &diff) const
 
void get_row (const std::string &row, bit_vector &bv) const
 
storage::version get_version () const
 
void mix (const bit_table_t &lhs, bit_table_t &rhs) const
 
 MSGPACK_DEFINE (bitvals_, bitvals_diff_)
 
std::string name () const
 
void pack (framework::packer &packer) const
 
bool put_diff (const bit_table_t &mixed_diff)
 
void remove_row (const std::string &row)
 
void set_row (const std::string &row, const bit_vector &bv)
 
void similar_row (const bit_vector &bv, std::vector< std::pair< std::string, float > > &ids, uint64_t ret_num) const
 
void unpack (msgpack::object o)
 
 ~bit_index_storage ()
 
- Public Member Functions inherited from jubatus::core::framework::model
virtual ~model ()
 

Private Attributes

bit_table_t bitvals_
 
bit_table_t bitvals_diff_
 

Detailed Description

Definition at line 35 of file bit_index_storage.hpp.

Constructor & Destructor Documentation

jubatus::core::storage::bit_index_storage::bit_index_storage ( )

Definition at line 38 of file bit_index_storage.cpp.

38  {
39 }
jubatus::core::storage::bit_index_storage::~bit_index_storage ( )

Definition at line 41 of file bit_index_storage.cpp.

41  {
42 }

Member Function Documentation

void jubatus::core::storage::bit_index_storage::clear ( )
virtual

Reimplemented from jubatus::core::framework::model.

Definition at line 78 of file bit_index_storage.cpp.

References bitvals_, and bitvals_diff_.

78  {
79  bit_table_t().swap(bitvals_);
80  bit_table_t().swap(bitvals_diff_);
81 }
jubatus::util::data::unordered_map< std::string, bit_vector > bit_table_t
void jubatus::core::storage::bit_index_storage::get_all_row_ids ( std::vector< std::string > &  ids) const

Definition at line 83 of file bit_index_storage.cpp.

References bitvals_, and bitvals_diff_.

83  {
84  ids.clear();
85  for (bit_table_t::const_iterator it = bitvals_.begin(); it != bitvals_.end();
86  ++it) {
87  ids.push_back(it->first);
88  }
89  for (bit_table_t::const_iterator it = bitvals_diff_.begin();
90  it != bitvals_diff_.end(); ++it) {
91  if (bitvals_.find(it->first) == bitvals_.end()) {
92  ids.push_back(it->first);
93  }
94  }
95 }
void jubatus::core::storage::bit_index_storage::get_diff ( bit_table_t diff) const

Definition at line 97 of file bit_index_storage.cpp.

References bitvals_diff_.

97  {
98  diff = bitvals_diff_;
99 }
void jubatus::core::storage::bit_index_storage::get_row ( const std::string &  row,
bit_vector bv 
) const

Definition at line 48 of file bit_index_storage.cpp.

References bitvals_, and bitvals_diff_.

48  {
49  {
50  bit_table_t::const_iterator it = bitvals_diff_.find(row);
51  if (it != bitvals_diff_.end()) {
52  bv = it->second;
53  return;
54  }
55  }
56  {
57  bit_table_t::const_iterator it = bitvals_.find(row);
58  if (it != bitvals_.end()) {
59  bv = it->second;
60  return;
61  }
62  }
63  bv = bit_vector();
64 }
bit_vector_base< uint64_t > bit_vector
storage::version jubatus::core::storage::bit_index_storage::get_version ( ) const
inline

Definition at line 51 of file bit_index_storage.hpp.

51  {
52  return storage::version();
53  }
void jubatus::core::storage::bit_index_storage::mix ( const bit_table_t lhs,
bit_table_t rhs 
) const

Definition at line 115 of file bit_index_storage.cpp.

115  {
116  for (bit_table_t::const_iterator it = lhs.begin(); it != lhs.end(); ++it) {
117  rhs[it->first] = it->second;
118  }
119 }
jubatus::core::storage::bit_index_storage::MSGPACK_DEFINE ( bitvals_  ,
bitvals_diff_   
)
string jubatus::core::storage::bit_index_storage::name ( ) const

Definition at line 172 of file bit_index_storage.cpp.

172  {
173  return string("bit_index_storage");
174 }
void jubatus::core::storage::bit_index_storage::pack ( framework::packer packer) const
virtual

Implements jubatus::core::framework::model.

Definition at line 164 of file bit_index_storage.cpp.

164  {
165  packer.pack(*this);
166 }
msgpack::packer< jubatus_packer > packer
Definition: bandit_base.hpp:31
bool jubatus::core::storage::bit_index_storage::put_diff ( const bit_table_t mixed_diff)

Definition at line 101 of file bit_index_storage.cpp.

References bitvals_, and bitvals_diff_.

102  {
103  for (bit_table_t::const_iterator it = mixed_diff.begin();
104  it != mixed_diff.end(); ++it) {
105  if (it->second.bit_num() == 0) {
106  bitvals_.erase(it->first);
107  } else {
108  bitvals_[it->first] = it->second;
109  }
110  }
111  bitvals_diff_.clear();
112  return true;
113 }
void jubatus::core::storage::bit_index_storage::remove_row ( const std::string &  row)

Definition at line 66 of file bit_index_storage.cpp.

References bitvals_, and bitvals_diff_.

66  {
67  if (bitvals_.find(row) == bitvals_.end()) {
68  // The row is not in the master table; we can
69  // immedeately remove it from the diff table.
70  bitvals_diff_.erase(row);
71  } else {
72  // Keep the row in the diff table until next MIX to
73  // propagate the removal of this row to other nodes.
74  bitvals_diff_[row] = bit_vector();
75  }
76 }
bit_vector_base< uint64_t > bit_vector
void jubatus::core::storage::bit_index_storage::set_row ( const std::string &  row,
const bit_vector bv 
)

Definition at line 44 of file bit_index_storage.cpp.

References bitvals_diff_.

44  {
45  bitvals_diff_[row] = bv;
46 }
void jubatus::core::storage::bit_index_storage::similar_row ( const bit_vector bv,
std::vector< std::pair< std::string, float > > &  ids,
uint64_t  ret_num 
) const

Definition at line 132 of file bit_index_storage.cpp.

References jubatus::core::storage::bit_vector_base< bit_base >::bit_num(), bitvals_, bitvals_diff_, jubatus::core::storage::fixed_size_heap< T, Comp >::get_sorted(), and jubatus::core::storage::similar_row_one().

135  {
136  ids.clear();
137  uint64_t bit_num = bv.bit_num();
138  if (bit_num == 0) {
139  return;
140  }
141 
142  heap_type heap(ret_num);
143 
144  for (bit_table_t::const_iterator it = bitvals_diff_.begin();
145  it != bitvals_diff_.end(); ++it) {
146  similar_row_one(bv, *it, heap);
147  }
148  for (bit_table_t::const_iterator it = bitvals_.begin(); it != bitvals_.end();
149  ++it) {
150  if (bitvals_diff_.find(it->first) != bitvals_diff_.end()) {
151  continue;
152  }
153  similar_row_one(bv, *it, heap);
154  }
155 
156  vector<pair<uint64_t, string> > scores;
157  heap.get_sorted(scores);
158  for (size_t i = 0; i < scores.size() && i < ret_num; ++i) {
159  ids.push_back(make_pair(scores[i].second,
160  static_cast<float>(scores[i].first) / bit_num));
161  }
162 }
fixed_size_heap< pair< uint64_t, string >, greater< pair< uint64_t, string > > > heap_type
static void similar_row_one(const bit_vector &x, const pair< string, bit_vector > &y, heap_type &heap)

Here is the call graph for this function:

void jubatus::core::storage::bit_index_storage::unpack ( msgpack::object  o)
virtual

Implements jubatus::core::framework::model.

Definition at line 168 of file bit_index_storage.cpp.

168  {
169  o.convert(this);
170 }

Member Data Documentation

bit_table_t jubatus::core::storage::bit_index_storage::bitvals_
private

Definition at line 65 of file bit_index_storage.hpp.

Referenced by clear(), get_all_row_ids(), get_row(), put_diff(), remove_row(), and similar_row().

bit_table_t jubatus::core::storage::bit_index_storage::bitvals_diff_
private

The documentation for this class was generated from the following files: