fuzzy_match 2.0.4 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -1,3 +1,9 @@
1
+ 2.1.0 / 2014-07-14
2
+
3
+ * Breaking changes
4
+
5
+ * Ignore single word matches if threshold is non-nil - thanks @lukeasrodgers ! https://github.com/seamusabshere/fuzzy_match/pull/14
6
+
1
7
  2.0.4 / 2013-09-19
2
8
 
3
9
  * Bug fixes
data/Gemfile CHANGED
@@ -1,5 +1,4 @@
1
- source :rubygems
2
-
1
+ source 'https://rubygems.org'
3
2
  gemspec
4
3
 
5
4
  # bin/fuzzy_match development
@@ -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
- ## Authors
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
 
@@ -38,7 +38,7 @@ class FuzzyMatch
38
38
  :gather_last_result => false,
39
39
  :find_all => false,
40
40
  :find_all_with_score => false,
41
- :threshold => 0,
41
+ :threshold => nil,
42
42
  :find_best => false,
43
43
  :find_with_score => false,
44
44
  }
@@ -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
@@ -1,3 +1,3 @@
1
1
  class FuzzyMatch
2
- VERSION = '2.0.4'
2
+ VERSION = '2.1.0'
3
3
  end
@@ -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.4
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: 2013-09-19 00:00:00.000000000 Z
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: 1.8.25
232
+ rubygems_version: 2.2.2
257
233
  signing_key:
258
- specification_version: 3
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: []