fuzzy_match 2.0.4 → 2.1.0
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.
- checksums.yaml +7 -0
- data/CHANGELOG +6 -0
- data/Gemfile +1 -2
- data/README.markdown +2 -1
- data/lib/fuzzy_match.rb +1 -1
- data/lib/fuzzy_match/similarity.rb +2 -2
- data/lib/fuzzy_match/version.rb +1 -1
- data/spec/fuzzy_match_spec.rb +9 -0
- metadata +31 -55
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a33310fff722b4e0b2a80880e980564712a7ab6a
|
4
|
+
data.tar.gz: 4d21b8246e9773529b286c2a81ba7380d40f61e3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2b6444fe73846bb0c1c088a54ac5c500ce80689d6a29e6ed29a68860cfe9a5ad856e98090118d6a6e3ac8dfb4ea474d8315d0ca55ba35b503456c9bb499754a5
|
7
|
+
data.tar.gz: a22014027c0c5d37c52fb12d6667e02ab7d92b083a2ca0478fb3a463a8c765e3efd9e64ff355ebf8b0fbcbe94b1a0de39257ec6ac511181110d25ca9fd22f73b
|
data/CHANGELOG
CHANGED
data/Gemfile
CHANGED
data/README.markdown
CHANGED
@@ -180,11 +180,12 @@ We often combine it with [`remote_table`](https://github.com/seamusabshere/remot
|
|
180
180
|
- correct serious or repeated errors with `errata`
|
181
181
|
- `fuzzy_match` the rest
|
182
182
|
|
183
|
-
##
|
183
|
+
## Contributors
|
184
184
|
|
185
185
|
* Seamus Abshere <seamus@abshere.net>
|
186
186
|
* Ian Hough <ijhough@gmail.com>
|
187
187
|
* Andy Rossmeissl <andy@rossmeissl.net>
|
188
|
+
* Luke Rodgers [@lukeasrodgers](https://github.com/lukeasrodgers)
|
188
189
|
|
189
190
|
## Copyright
|
190
191
|
|
data/lib/fuzzy_match.rb
CHANGED
@@ -22,9 +22,9 @@ class FuzzyMatch
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def satisfy?(needle, threshold)
|
25
|
-
best_score.dices_coefficient_similar > threshold or
|
25
|
+
best_score.dices_coefficient_similar > (threshold || 0) or
|
26
26
|
((record2.clean.length < 3 or needle.clean.length < 3) and best_score.levenshtein_similar > 0) or
|
27
|
-
(needle.words & record2.words).any?
|
27
|
+
(threshold.nil? && (needle.words & record2.words).any?)
|
28
28
|
end
|
29
29
|
|
30
30
|
def inspect
|
data/lib/fuzzy_match/version.rb
CHANGED
data/spec/fuzzy_match_spec.rb
CHANGED
@@ -319,6 +319,15 @@ describe FuzzyMatch do
|
|
319
319
|
d.find('Y bar').should be_nil
|
320
320
|
end
|
321
321
|
|
322
|
+
it %{should not return false positives because of one-letter similarities if a threshold is used} do
|
323
|
+
# dices coefficient doesn't think these two are similar at all because it looks at pairs
|
324
|
+
FuzzyMatch.score_class.new('X foo', 'X bar').dices_coefficient_similar.should == 0
|
325
|
+
# so we must compensate for that somewhere
|
326
|
+
d = FuzzyMatch.new ['A great place to go for a drink is a bar', 'Some people enjoy congregating at their local bar, or "watering hole"']
|
327
|
+
d.find('chinup bar').should_not be_nil
|
328
|
+
d.find('chinup bar', threshold: 0.5).should be_nil
|
329
|
+
end
|
330
|
+
|
322
331
|
it %{finds possible matches even when pair distance fails} do
|
323
332
|
d = FuzzyMatch.new ['XX', '2 A']
|
324
333
|
d.find('2A').should == '2 A'
|
metadata
CHANGED
@@ -1,190 +1,167 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fuzzy_match
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
5
|
-
prerelease:
|
4
|
+
version: 2.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Seamus Abshere
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-07-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: active_record_inline_schema
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.4.0
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 0.4.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: pry
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec-core
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rspec-expectations
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rspec-mocks
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: activerecord
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '3'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '3'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: mysql2
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - ">="
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: cohort_analysis
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - ">="
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '0'
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - ">="
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '0'
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: weighted_average
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - ">="
|
148
130
|
- !ruby/object:Gem::Version
|
149
131
|
version: '0'
|
150
132
|
type: :development
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - ">="
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: '0'
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: yard
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
|
-
- -
|
143
|
+
- - ">="
|
164
144
|
- !ruby/object:Gem::Version
|
165
145
|
version: '0'
|
166
146
|
type: :development
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
|
-
- -
|
150
|
+
- - ">="
|
172
151
|
- !ruby/object:Gem::Version
|
173
152
|
version: '0'
|
174
153
|
- !ruby/object:Gem::Dependency
|
175
154
|
name: amatch
|
176
155
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
156
|
requirements:
|
179
|
-
- -
|
157
|
+
- - ">="
|
180
158
|
- !ruby/object:Gem::Version
|
181
159
|
version: '0'
|
182
160
|
type: :development
|
183
161
|
prerelease: false
|
184
162
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
163
|
requirements:
|
187
|
-
- -
|
164
|
+
- - ">="
|
188
165
|
- !ruby/object:Gem::Version
|
189
166
|
version: '0'
|
190
167
|
description: Find a needle in a haystack using string similarity and (optionally)
|
@@ -196,8 +173,8 @@ executables:
|
|
196
173
|
extensions: []
|
197
174
|
extra_rdoc_files: []
|
198
175
|
files:
|
199
|
-
- .gitignore
|
200
|
-
- .rspec
|
176
|
+
- ".gitignore"
|
177
|
+
- ".rspec"
|
201
178
|
- CHANGELOG
|
202
179
|
- Gemfile
|
203
180
|
- LICENSE
|
@@ -235,27 +212,26 @@ files:
|
|
235
212
|
- spec/spec_helper.rb
|
236
213
|
homepage: https://github.com/seamusabshere/fuzzy_match
|
237
214
|
licenses: []
|
215
|
+
metadata: {}
|
238
216
|
post_install_message:
|
239
217
|
rdoc_options: []
|
240
218
|
require_paths:
|
241
219
|
- lib
|
242
220
|
required_ruby_version: !ruby/object:Gem::Requirement
|
243
|
-
none: false
|
244
221
|
requirements:
|
245
|
-
- -
|
222
|
+
- - ">="
|
246
223
|
- !ruby/object:Gem::Version
|
247
224
|
version: '0'
|
248
225
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
226
|
requirements:
|
251
|
-
- -
|
227
|
+
- - ">="
|
252
228
|
- !ruby/object:Gem::Version
|
253
229
|
version: '0'
|
254
230
|
requirements: []
|
255
231
|
rubyforge_project: fuzzy_match
|
256
|
-
rubygems_version:
|
232
|
+
rubygems_version: 2.2.2
|
257
233
|
signing_key:
|
258
|
-
specification_version:
|
234
|
+
specification_version: 4
|
259
235
|
summary: Find a needle in a haystack using string similarity and (optionally) regexp
|
260
236
|
rules. Replaces loose_tight_dictionary.
|
261
237
|
test_files: []
|