I use Photo Mechanic version 4.5 which is very good for many tasks, but doesn't - this old version at least - offer a search through the entire collection of pictures. It is basically directory-based. It is very good for keywording though, and it lets you set keywords or other information (such as photographer, copyright etc.) in "batch mode". It is configurable with a list of aliases which shortens typing in certain situations.
I use Adobe Lightroom 2.3 for searching into my entire image database. This is an old version (I think they are at version 4 by now) but it is fit for the purpose. I don't find Lightroom practical for keywording.
Both programs can write file informations on XML "sidecar files" and/or append the information to the image itself. I find it better to use sidecar files. They also allow exchange of information between programs (I see in Lightroom keywords and description that I prepared with PhotoMechanic, and vice versa). Lightroom also keeps an internal database which is populated with all information into sidecar files and used for searches.
Lightroom costs more but offers more as it is a program for basic photographic post-processing of scans. It also opens "linear DNG" files.