Fuzzy searching for multi-word terms in Lucene
===

I am trying to add search functionality allowing people to look up potential friends either by email address (if you have it) or by name if you don't.  I'm currently looking at Lucene, but I'm open to considering other solutions.  I am trying to create a set of documents as such:

    |  id  |   text   |   text   |
    | 1234 | a@b.com  | John Doe |
    | 1235 | ab@c.com | Jane Doe |
    | 1236 | c@ba.com | Madonna  |

(yes, `text` is specified multiply)



This is all indexed with

    new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_40, new KeywordAnalyzer()));

and then I do a search with:

    TopDocs results = mySearcher.search(
        new FuzzyQuery(new Term("text", term), 2, 0),
        10);

I can do searches with emails just fine.  Searching for `a@b.com`, `ab@c.com` all work.  I can search for single-word names like `Madonna` just fine as well.  But as soon as I try to find multi-word names, it all falls apart.  Searches for `John`, `Jane`, `John Doe`, or `Doe` all return no results.

I'm curious for a better approach (there's some obvious limits with how far a 2-edit-distance match can take me), and also how I can make multi-word matches work.