25 #include "../common/exception.hpp" 
   26 #include "../common/hash.hpp" 
   31 using jubatus::util::lang::shared_ptr;
 
   36 namespace recommender {
 
   46     : hash_num_(config.hash_num) {
 
   61     vector<pair<string, float> >& ids,
 
   62     size_t ret_num)
 const {
 
   75     vector<pair<string, float> >& ids,
 
   76     size_t ret_num)
 const {
 
   78   for (
size_t i = 0; i < ids.size(); ++i) {
 
   79     ids[i].second = 1 - ids[i].second;
 
   95   vector<float> min_values_buffer(
hash_num_, FLT_MAX);
 
   97   for (
size_t i = 0; i < sfv.size(); ++i) {
 
   99     float val = sfv[i].second;
 
  100     for (uint64_t j = 0; j < 
hash_num_; ++j) {
 
  101       float hashval = 
calc_hash(key_hash, j, val);
 
  102       if (hashval < min_values_buffer[j]) {
 
  103         min_values_buffer[j] = hashval;
 
  104         hash_buffer[j] = key_hash;
 
  110   for (
size_t i = 0; i < hash_buffer.size(); ++i) {
 
  111     if ((hash_buffer[i] & 1LLU) == 1) {
 
  175   float r = 
static_cast<float>(a) / static_cast<float>(0xFFFFFFFFFFFFFFFFLLU);
 
  176   return -std::log(r) / val;
 
  180   return string(
"minhash");
 
  193   packer.pack_array(2);
 
  199   if (o.type != msgpack::type::ARRAY || o.via.array.size != 2) {
 
  200     throw msgpack::type_error();
 
void get_row(const std::string &row, std::vector< std::pair< std::string, float > > &columns) const 
 
void calc_minhash_values(const common::sfv_t &sfv, core::storage::bit_vector &bv) const 
 
void update_row(const std::string &id, const sfv_diff_t &diff)
 
void similar_row(const common::sfv_t &query, std::vector< std::pair< std::string, float > > &ids, size_t ret_num) const 
 
void neighbor_row(const common::sfv_t &query, std::vector< std::pair< std::string, float > > &ids, size_t ret_num) const 
 
void unpack(msgpack::object o)
 
void pack(framework::packer &packer) const 
 
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storage > mixable_storage_
 
core::common::sfv_t sfv_diff_t
 
#define JUBATUS_EXCEPTION(e)
 
void pack(framework::packer &packer) const 
 
void clear_row(const std::string &id)
 
framework::mixable * get_mixable() const 
 
static const uint64_t hash_prime
 
void get_all_row_ids(std::vector< std::string > &ids) const 
 
msgpack::packer< jubatus_packer > packer
 
bit_vector_base< uint64_t > bit_vector
 
static float calc_hash(uint64_t a, uint64_t b, float val)
 
void unpack(msgpack::object o)
 
static void hash_mix64(uint64_t &a, uint64_t &b, uint64_t &c)
 
void remove_row(const std::string &row)
 
core::storage::sparse_matrix_storage orig_
 
std::vector< std::pair< std::string, float > > sfv_t
 
void set_row(const std::string &row, const std::vector< std::pair< std::string, float > > &columns)
 
static uint64_t calc_string_hash(const std::string &s)