This is a sticky post:
free internal site search code ?
Don't dig too deep is my advice. I once used the one proposed by incrediblehelp and it may be good enough.
Since this thread is posted in the database forum:
If you are clever on SQL, using a database may be the best solution. You can make the search options you like depending on the fields and records in the database. Then it is very important to have a good structure on your tables, fields and records.