Search engines are like real estate, the key to success is location, location, location. Keyword and description meta tags are all well and good for those engines that pay attention to them, but the best thing is a single descriptive paragraph as early in the page as possible.
You should also know that Java-script and tables (search engines tend to read down the columns) can push your text down the page, and so make it less relevant. A good rule of thumb is, if a blind person can navigate your pages, so can a search engine.
Avoid active content. Consider re-generating static pages on a daily basis instead.
I run a couple of engines based on SFgate. SFgate is a perl CGI interface to freeWAIS-sf.
WAIS stands for Wide Area Information Service. It's a set of protocols for creating a hierarchy of searchable databases. Implementations also contain an indexing program to create the database. It does this by taking every word in a document, stemming it to strip off pluralization and such, then applying a soundex algorithm. It stores this hash and a pointer to the original document in a database. By using the soundex, it can come up with hits for mis-spelled and sound-alike words.
There are three freely available implementations. The original WAIS, freeWAIS, and freeWAIS-sf. The original was written to demonstrate the technology. freeWAIS was based on this, but geared more toward portability. freeWAIS-sf was based on the 0.202 version of freeWAIS, added the ability to understand the structure of a document. For example, if it's indexing mail messages or such, it can recognize author and dates, and you can restrict searches on that.
It also requires the Wais module, available from any CPAN site.
When compiling freeWAIS-sf, you can compile it in two modes, proximity and string-search. In proximity more, you can use the keyword near to construct a query, but you can't search for "Some String". The other important choice is whether or not to use modified docid handling. freeWAIS-sf can be compiled to hand back a URL to the document instead of the filename. A lot of my documents need processing first, so I don't use it, but for indexing a web site, it's a win.
So you've ignored my advice about active content. Fine!