lib/fuzzy_match/similarity.rb in fuzzy_match-1.3.3 vs lib/fuzzy_match/similarity.rb in fuzzy_match-1.4.0
- old
+ new
@@ -15,39 +15,41 @@
else
by_score
end
end
+ def best_score
+ @best_score ||= FuzzyMatch.score_class.new(best_wrapper1_variant, best_wrapper2_variant)
+ end
+
+ def inspect
+ %{#<FuzzyMatch::Similarity #{wrapper2.render.inspect}=>#{best_wrapper2_variant.inspect} versus #{wrapper1.render.inspect}=>#{best_wrapper1_variant.inspect} original_weight=#{"%0.5f" % original_weight} best_score=#{best_score.inspect}>}
+ end
+
# Weight things towards short original strings
def original_weight
@original_weight ||= (1.0 / (wrapper1.render.length * wrapper2.render.length))
end
-
- def best_score
- @best_score ||= FuzzyMatch.score_class.new best_wrapper1_variant, best_wrapper2_variant
- end
-
+
+ private
+
def best_wrapper1_variant
best_variants[0]
end
def best_wrapper2_variant
best_variants[1]
end
def best_variants
- @best_variants ||= wrapper1.variants.product(wrapper2.variants).sort do |tuple1, tuple2|
- wrapper1_variant1, wrapper2_variant1 = tuple1
- wrapper1_variant2, wrapper2_variant2 = tuple2
-
- score1 = FuzzyMatch.score_class.new wrapper1_variant1, wrapper2_variant1
- score2 = FuzzyMatch.score_class.new wrapper1_variant2, wrapper2_variant2
-
- score1 <=> score2
- end[-1]
- end
-
- def inspect
- %{#<FuzzyMatch::Similarity #{wrapper2.render.inspect}=>#{best_wrapper2_variant.inspect} versus #{wrapper1.render.inspect}=>#{best_wrapper1_variant.inspect} original_weight=#{"%0.5f" % original_weight} best_score=#{best_score.inspect}>}
+ @best_variants ||= begin
+ wrapper1.variants.product(wrapper2.variants).sort do |tuple1, tuple2|
+ wrapper1_variant1, wrapper2_variant1 = tuple1
+ wrapper1_variant2, wrapper2_variant2 = tuple2
+ score1 = FuzzyMatch.score_class.new wrapper1_variant1, wrapper2_variant1
+ score2 = FuzzyMatch.score_class.new wrapper1_variant2, wrapper2_variant2
+ score1 <=> score2
+ end.last
+ end
end
end
end