For the most simple of searching through text, one might use a program such as Unix's grep command. It's not terribly sophisticated, but it and such variants as agrep (for doing "approximate" pattern matching) or sgrep (for searching SGML documents) are nonetheless tremendously useful for searching for things, particularly when composed with other commands.
Many "search engines" have been designed to index hierarchies of text database material, and provide far more sophisticated tools to query information.
Remembrance Agent source code in C and Emacs LISP is available; RA integrates with the Emacs editor to automagically retrieve data that is "related" to whatever you're working on now.
A Gnome tool written using Mono ; see also Beagle search tool.
KDE tools for Beagle have appeared; note: