I think you may be mixing up two unrelated issues here. Searching vs. Filtering is one, and "begins with" vs. "contains" is another.
The difference between searching and filtering is basically whether you do it on the fly, or do you execute the search only once the user gave an explicit command to do so - pressed "search" or "go" or whatever. Granted, Google complicated things a bit with their instant search, and I consider it as search pretending to be filtering :). Judging from your example, it seems like you really are talking about filtering.
As to "begins with" vs. "contains": when you search across a number of fields at once, or in a large set of data, or when the fields may contain expressions and not just single words, I'd say go with "contains".
For example, you are searching your music collection, across the fields of Artist, Genre, Album, Artist, in thousands of files, and you want to locate "The Wall". You won't like to have to type "The", because half the songs, albums and bands begin with that. You just want to type "Wall" and end up with maybe 10 results. Or, you're searching the phone book in your phone, for John Smith. You don't want to have to remember whether he's listed as John Smith or as Smith, John. You just want to type "Smith" and find him.
But your example is different. There's a very small set of inflexible brand names, so I know just what I want to find, and I don't want anything to get in the way. So if I type N, I expect to find Nikon, and definitely not Sony or Minolta.
In short, only in a few very specific cases would I use "contains" on the letter-level. Maybe in linguistic settings such as an online dictionary. But I would definitely use it to search for expressions containing specific words - and the words would still need to begin with the letters that I type, not just contain them.