perhaps of interest is seft [http://ww2.cs.mu.oz.au/~oldk/seft/] which works well for me. It is unusual in that it allows all the usual text searching tools (including AltaVista's long lamented () "near" operator, but does not use indices, it does it the hard way.
Before you dismiss this as slow, its just a matter of exactly what your problem is. Mine is a relatively small amount of rather dynamic data. if you want it I oprted it to APE here: contrib/install steve/seft -Steve