Fuzzy search

Fuzzy search will only help you match where there's max 2 characters different between search term and indexed term.

To match "San" with "San Diego" in the city field it sounds like you want to use a prefix query and to use a keyword field with a lower case normalizer.