We just figured this out and I think we've found the best way to do this.
You can use specific names for your pre-chat survey questions and the system will try to match with Contacts. These include Name, Phone, Email. If you use these, then it will try to match based on these.
1.) Now, it will actually try to do an "and" match so if you have name and email, and the customer has the right email but they type their name differently (say "Jennie Smith" instead of "Jennifer Smith", then it won't match.
2,) Also it won't match if there is more than one result. Let's say you have two contacts with "jennie.smith@madeupemail.com" as their email.
So we have configured ours so that only the "email" question on the pre-chat survey is used to look up the contact to resolve #1. We also made a big effort to remove duplicate contacts from our system (by email) to resolve #2.
And now it is working great, aside from when you get a completely unknown contact, then we still have to create a new contact for them.