I need to develop a solution that will provide the ability for a user to search based on a city and state. The user should have the ability to request that the search result
It seems that what you're looking for is a GIS (Geographical Information System) in which each (or some) piece of information is linked to its geographical location. Such sistems allow to perform spatial searches on those geographical location, eg. "give me all stores in a 5 mile radious from this position which sells a specific product" (combining spatial and traditional searches is also possible).
Now some examples of technologies you can use:
You'll want to start with a database of cities, states and zip codes with their corresponding latitude and longitude. Here's a link to a site where you can download such a database for free.
Next you'll need an algorithm to find which cities/zip codes are within an X mile radius of the city/zip the person entered. Here's another link that should explain how to do that.
You might wanna have a look at GeoNames.
I have written a .NET WCF client for GeoNames, available here.