J'utilise un filtre bloom dans une application pour rechercher les doublons:Suppression/La réinitialisation/Suppression d'un filtre Bloom dans NodeJS
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");
Après un certain nombre de tours que je voudrais réinitialiser/clear/renouveler le filtre comme vous le voyez dans ma déclaration ci-dessus mais cela échoue bien sûr car il est encore utilisé à ce moment-là.
Comment est-ce que j'écrirais un rappel ou similaire pour obtenir le filtre remis à zéro?
Merci
cela devrait fonctionner si vous supprimez le 'var' avant' var filter = ... 'dans le rappel, vous redéfinissez une nouvelle variable locale' filter' – Plato