在NodeJS中删除/重新安装/清除Bloom过滤器

时间:2015-08-26 18:28:10

标签: javascript node.js bloom-filter

我在应用中使用bloom过滤器来扫描重复项:

var BloomFilter = require('bloom-filter');

var numberOfElements = 30000;
var falsePositiveRate = 0.005;
var filter = BloomFilter.create(numberOfElements, falsePositiveRate);

var workFunction = function(var1, var2) {


        var bloomData = new Buffer(var1 + var2, "hex");

        if(!filter.contains(bloomData)){

          console.log("In the loop, adding the element to the bloom filter now!");
          filter.insert(bloomData);

         // work with the data and see if I found a needle in the haystack .. if yes, the bloom filter needs a reset !
        if (var === "123") {
          console.log("Needle found, resetting to fresh filter, new round !");
          var filter = BloomFilter.create(numberOfElements, falsePositiveRate);    // WRONG HERE  but you get the idea! 
        }


        } else {
          console.log("This entry is already in the bloom filter !");
        }
}



workFunction("1234", "1234");

经过一定数量的回合后,我想重置/清除/更新过滤器,如上所述,但这当然失败了,因为它仍在使用中。

如何编写回调或类似内容以重置过滤器?

由于

1 个答案:

答案 0 :(得分:0)

看起来特定节点模块没有reset方法或API中的任何类似方法。

此时似乎你可以做两件事。

1.为该回购要求提供此类功能的问题(或编写您自己的Pull-Request)https://github.com/jasondavies/bloomfilter.js

2.更改您workFunction的行为以重置过滤器。

var workFunction = function(var1, var2) {
  var filter = BloomFilter.create(numberOfElements, falsePositiveRate);
  // ...
}

或类似的东西自己重置它。