使C ++ 11中的LSH实现更快

时间:2019-12-18 22:14:28

标签: c++ c++11 minhash lsh

我正在实现minhash和LSH,以便在C ++ 11中对某些字符串元素进行相似性搜索。我的实现的minhash草图是200个64位整数(即vector<uint64_t> MinHashSketch)的向量。我有超过200万个条目,并且草图生成部分不需要很多时间。但是,存储阶段需要很长时间。我想知道是否可以提出一些建议,以使其更快一点。以下是我使用LSH进行存储的阶段。

我正在草图中的连续元素创建一个哈希,该哈希成为存储区ID。如果为bsize = 5,则1-5, 6-10, 11-15, ... 196-200中的MinHashSketch[i]个元素(第i个元素)构成存储区ID。按照执行该操作的代码。

for (int p = 0; p < 200; p += bsize) {  //bsize = 5
  string s = ""; 
  for(int x = p; x < (p+bsize); x++){
    s = s + to_string(MinHashSketch[i].at(x)); // ith element 
  }       
  uint64_t hash1 = 0;  // bucket id
  Hash_function ((uint8_t*)s.c_str(), s.length(), (uint8_t *)&hash1, 0);
  ........
  ........
}

0 个答案:

没有答案