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