bloomer 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +0 -4
- data/README.md +9 -8
- data/bloomer.gemspec +6 -3
- data/lib/bloomer.rb +0 -2
- data/lib/bloomer/version.rb +3 -0
- data/spec/bloomer_spec.rb +0 -1
- data/spec/spec_helper.rb +1 -0
- metadata +54 -10
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
# Bloomer:
|
1
|
+
# Bloomer: Bloom filters with elastic
|
2
2
|
|
3
3
|
[Bloom filters](http://en.wikipedia.org/wiki/Bloom_filter) are great for quickly checking to see if
|
4
4
|
a given string has been seen before--in constant time, and using a fixed amount of RAM, as long
|
5
|
-
as you know the expected number of elements up front.
|
5
|
+
as you know the expected number of elements up front. If you add more than ```capacity``` elements to the filter,
|
6
|
+
accuracy for ```include?``` will drop below ```false_positive_probability```.
|
6
7
|
|
7
|
-
[Scalable Bloom Filters](http://gsd.di.uminho.pt/members/cbm/ps/dbloom.pdf)
|
8
|
-
|
9
|
-
growing the RAM requirements.
|
8
|
+
[Scalable Bloom Filters](http://gsd.di.uminho.pt/members/cbm/ps/dbloom.pdf) maintain a maximal ```false_positive_probability```
|
9
|
+
by using additional RAM as needed.
|
10
10
|
|
11
11
|
```Bloomer``` is a Bloom Filter. ```Bloomer::Scalable``` is a Scalable Bloom Filter.
|
12
12
|
|
13
|
-
Keep in mind that false positives with Bloom
|
13
|
+
Keep in mind that **false positives with Bloom filters are expected**, with a specified probability rate.
|
14
14
|
False negatives, however, are not. In other words,
|
15
15
|
|
16
16
|
* if ```include?``` returns *false*, that string has *certainly not* been ```add```ed
|
@@ -39,7 +39,7 @@ bf.include? "dog"
|
|
39
39
|
#=> false
|
40
40
|
```
|
41
41
|
|
42
|
-
Scalable Bloom filters
|
42
|
+
Scalable Bloom filters uses the same API:
|
43
43
|
|
44
44
|
```ruby
|
45
45
|
b = Bloomer::Scalable.new
|
@@ -48,6 +48,7 @@ b.include? "boom"
|
|
48
48
|
#=> true
|
49
49
|
bf.include? "badda"
|
50
50
|
#=> false
|
51
|
+
```
|
51
52
|
|
52
53
|
Serialization is through [Marshal](http://ruby-doc.org/core-1.8.7/Marshal.html):
|
53
54
|
|
@@ -65,5 +66,5 @@ new_b.include? "a"
|
|
65
66
|
* 0.0.1 Bloom, there it is.
|
66
67
|
* 0.0.2 Switch to triple-hash chaining (simpler, faster, and better false-positive rate)
|
67
68
|
* 0.0.3 Added support for scalable bloom filters (SBF)
|
68
|
-
|
69
|
+
* 0.0.4 Fixed gem packaging
|
69
70
|
|
data/bloomer.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
3
|
|
4
|
-
require "bloomer"
|
4
|
+
require "bloomer/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "bloomer"
|
@@ -9,8 +9,8 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.authors = ["Matthew McEachen"]
|
10
10
|
s.email = ["matthew+github@mceachen.org"]
|
11
11
|
s.homepage = "https://github.com/mceachen/bloomer"
|
12
|
-
s.summary = %q{
|
13
|
-
s.description = %q{
|
12
|
+
s.summary = %q{Bloom filters and Scalable Bloom filters (SBF) in pure ruby}
|
13
|
+
s.description = %q{Bloom filters and Scalable Bloom filters (SBF) in pure ruby}
|
14
14
|
|
15
15
|
s.rubyforge_project = "bloomer"
|
16
16
|
|
@@ -20,4 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
22
|
s.add_dependency "bitarray"
|
23
|
+
s.add_development_dependency "rake"
|
24
|
+
s.add_development_dependency "yard"
|
25
|
+
s.add_development_dependency "rspec", "~> 2.7.0"
|
23
26
|
end
|
data/lib/bloomer.rb
CHANGED
data/spec/bloomer_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bloomer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matthew McEachen
|
@@ -15,11 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-01-
|
19
|
-
default_executable:
|
18
|
+
date: 2012-01-22 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
prerelease: false
|
22
|
+
type: :runtime
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
24
|
none: false
|
25
25
|
requirements:
|
@@ -29,10 +29,53 @@ dependencies:
|
|
29
29
|
segments:
|
30
30
|
- 0
|
31
31
|
version: "0"
|
32
|
-
type: :runtime
|
33
32
|
name: bitarray
|
34
33
|
version_requirements: *id001
|
35
|
-
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
prerelease: false
|
36
|
+
type: :development
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
name: rake
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
prerelease: false
|
50
|
+
type: :development
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
name: yard
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
prerelease: false
|
64
|
+
type: :development
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ~>
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 19
|
71
|
+
segments:
|
72
|
+
- 2
|
73
|
+
- 7
|
74
|
+
- 0
|
75
|
+
version: 2.7.0
|
76
|
+
name: rspec
|
77
|
+
version_requirements: *id004
|
78
|
+
description: Bloom filters and Scalable Bloom filters (SBF) in pure ruby
|
36
79
|
email:
|
37
80
|
- matthew+github@mceachen.org
|
38
81
|
executables: []
|
@@ -49,9 +92,9 @@ files:
|
|
49
92
|
- Rakefile
|
50
93
|
- bloomer.gemspec
|
51
94
|
- lib/bloomer.rb
|
95
|
+
- lib/bloomer/version.rb
|
52
96
|
- spec/bloomer_spec.rb
|
53
97
|
- spec/spec_helper.rb
|
54
|
-
has_rdoc: true
|
55
98
|
homepage: https://github.com/mceachen/bloomer
|
56
99
|
licenses: []
|
57
100
|
|
@@ -81,10 +124,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
124
|
requirements: []
|
82
125
|
|
83
126
|
rubyforge_project: bloomer
|
84
|
-
rubygems_version: 1.
|
127
|
+
rubygems_version: 1.8.15
|
85
128
|
signing_key:
|
86
129
|
specification_version: 3
|
87
|
-
summary:
|
130
|
+
summary: Bloom filters and Scalable Bloom filters (SBF) in pure ruby
|
88
131
|
test_files:
|
89
132
|
- spec/bloomer_spec.rb
|
90
133
|
- spec/spec_helper.rb
|
134
|
+
has_rdoc:
|