4. The method of claim 1 wherein said nicknames algorithm comprises the following steps: (a) preparing a text file of formal names and nicknames; (b) inverting said file such that nicknames map to formal names and to nicknames for said formal names; and (c) generating multiple keys for first names for all possible nicknames and formal names related to said first names.
1. A computerized method for optimizing name search results for a computer user comprising: (a) creating at a computer for a name database indices comprising: (i) a phonetic index with terms generated from application of at least one phonetic algorithm to first names and to last names in said database; (ii) a nickname index with terms generated from application of at least one nickname algorithm to first names in said database; (b) creating at said computer for said name database a misspelling index with keys for finding names in said database by applying a misspelling algorithm to first names and to last names wherein the algorithm: (i) alphanumerically sorts the letters in said first names and last names; (ii) generates a first key for each of said first names and said last names comprising letters for said first name or last name in alphanumeric sorted order; and (iii) removes each letter of said first name or last name in alphanumeric sorted order to generate additional keys comprising said first key with said letters removed from said first key; (c) receiving at said computer a search request comprising a first name and a last name; (d) receiving at said computer a candidate number of names from said database; (e) creating at said computer a search results set by adding names to said search results set for said first name and said last name up to said candidate number of names according to the following steps: (i) searching said name database for an exact match of said first name and said last name; (ii) searching said name database for names that have all words from said last name and said first name but not in said search results set; (iii) searching said name database for names that have all words from said last name and a fuzzy version of said first name using said phonetic, nickname, and misspelling indices but not in said search results set; (iv) searching said name database for names that have all words from said first name and a fuzzy version of said last name using said phonetic and misspelling indices but not in said search results set; (v) searching said name database for names that have fuzzy versions of said first name and said last name using said phonetic, misspelling, and nickname indices but not in said search results set; (vi) ranking intermediate results at each step (i)-(v) and eliminating a plurality of names from said search results set according to said rankings for said names; and (f) presenting to said computer user on a computer display names from said search results set up to said candidate number of names.