首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NodeJS中删除/重置/清除布隆过滤器

在NodeJS中删除/重置/清除布隆过滤器
EN

Stack Overflow用户
提问于 2015-08-27 02:28:10
回答 2查看 269关注 0票数 1

我在一个应用程序中使用bloom filter来扫描重复项:

代码语言:javascript
复制
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");

经过一定次数的循环后,我想要重置/清除/更新过滤器,正如您在上面的语句中看到的那样,但这当然失败了,因为它在这一点上仍然在使用。

我该如何写一个回调或类似的代码来重置过滤器呢?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-08-27 02:33:44

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

在这一点上你似乎可以做两件事。

1.为存储库创建一个问题,请求这样一个特性(或编写自己的拉取请求) https://github.com/jasondavies/bloomfilter.js

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

代码语言:javascript
复制
var workFunction = function(var1, var2) {
  var filter = BloomFilter.create(numberOfElements, falsePositiveRate);
  // ...
}

或者类似于自己重置的东西。

票数 0
EN

Stack Overflow用户

发布于 2015-08-27 04:19:34

您可以使用filter.clear() (implemented here)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32234075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档