Search and automation is always an interesting topic. There are a number of things to consider designing search auto fill, such as – do you want to match the beginning of a word, or part of a word? Do you have a controlled library of things to search from or are we talking about free text search? How about spelling errors – should we handle them or not? Do we want to give instant results to our search – or just the presumed correct search term leading to a search result page?
Auto-complete
Auto-complete works best in conjunction to a controlled vocabulary, such as names, locations, e-mail addresses and the like. If it is names, we should consider first names and last names just as valid. The user might recall the first name or the last name. Showing results on auto-complete for both first names and last names make the most sense to the user.
Auto-suggest
Auto-suggest on the other hand is very close related to auto-complete, but the goal is to help the user in different ways, such as suggesting the correct spelling, related search terms (from a taxonomy), frequent searches and more. It is harder to implement, but is the one who helps the user most. In this case it’s hard to have a wider search (if you have a lot of content) who would match within a string. Better yet to suggest spelling corrections – and the user will be helped in a better way. I would suggest (!) that you use the entered string from the beginning of words and not within words.
Instant results
The third option you have is to implement instant result, and skip the search result page completely. This technique is implemented on Apple.com and on Windows 7 and Windows 8 search capabilities. You get groups of possible items such as programs, documents and settings in return.
More to read: Designing Search (part 2): As-you-type suggestions