1. DidYouMean::
  2. Jaro

module DidYouMean::Jaro

Public Instance Methods

Source
# File lib/did_you_mean/jaro_winkler.rb, line 5defdistance(str1,str2)str1,str2 =str2,str1ifstr1.length>str2.lengthlength1,length2 =str1.length,str2.lengthm          =0.0t          =0.0range      =length2>3?length2/2-1:0flags1     =0flags2     =0# Avoid duplicating enumerable objectsstr1_codepoints =str1.codepointsstr2_codepoints =str2.codepointsi =0whilei<length1last =i+rangej    = (i>=range)?i-range:0whilej<=lastifflags2[j]==0&&str1_codepoints[i]==str2_codepoints[j]flags2|= (1<<j)flags1|= (1<<i)m+=1breakendj+=1endi+=1endk =i =0whilei<length1ifflags1[i]!=0j =index =kk =whilej<length2index =jbreak(j+1)ifflags2[j]!=0j+=1endt+=1ifstr1_codepoints[i]!=str2_codepoints[index]endi+=1endt = (t/2).floorm==0?0: (m/length1+m/length2+ (m-t)/m)/3end