import java.util.*;
import com.wcohen.ss.*;
import com.wcohen.ss.lookup.*;
import com.wcohen.ss.tokens.*;
import com.wcohen.ss.api.*;

public class SecondStringSample
{
    public static void main(String[] args)
    {
	String[] name  = {"William Cohen", "Eric Nyberg", "Scott Fahlmann", "Tom Mitchell"};
	String[] misspelled = {"w cohon", "nyborg", "falman", "tom"};
	StringDistance distance1 = new MongeElkan();
	StringDistance distance2 = new JaroWinkler();
	for (int i=0; i<name.length; i++) {
	    System.out.println("'"+name[i]+"' ~1 '"+misspelled[i]+"' = "
			       + distance1.score(name[i],misspelled[i]));
	    System.out.println("'"+name[i]+"' ~2 '"+misspelled[i]+"' = "
			       + distance2.score(name[i],misspelled[i]));
	}

	SoftDictionary softDict = new SoftDictionary(); // use a default distance measure
	for (int i=0; i<name.length; i++) {
	    softDict.put( name[i], null  );
	}
	for (int i=0; i<misspelled.length; i++) {
	    System.out.println("best match to '"+misspelled[i]+"' = "
			       +softDict.lookup( misspelled[i]));
	}
    }
}
