Пришла еще одна мысль в голову :
не просто текст туда ложить, а базовые формы. Т.е. падежи преобразовываем в именительный, окончания отсекаем. То же самое делаем с запросом - преобразовываем его в базовую форму. Так же убрать союзы, предлоги и прочие , не несущие смысла части языка. И по результату уже искать.
А дальше лучше заниматься не генерацией индексов и т.д. (представь сколько ты разрабатывать это будешь), а распараллеливанием. Пусть купят 3-4 сервера под это дело, и распредели базу по этим серверам. При поиске сразу же запрос распределяй на 4 сервера параллельно, а потом объединяй результаты. Будет достаточно быстро. А насчет индекса (могу конечно ошибаться) - мускуль сам проиндексирует поля.
Да, и в поддержку сторонних решений - порекомендуй SharePoint. Он как раз стоит дорого, и компания, которая его разработала (Microsoft) у нее столько денег, что на инфу этой конторы им просто пох :). Опять же , аргументируй тем, что Windows-то они используют поди.
Сэкономь им деньги, убеди использовать mnogosearch, или sharepoint (последний предпочтительнее). а то получаетя - но мы пойдем своим путем.
а по теме - самый простой способ - храниь в базе текст документов. потом делать по ним поиск типа select .. like . потом сохранять результат в кеш. при переиндексации ресетить кеш.
это самый простой вариант который вам скорее всего не подойдет... а для реализации более сложных - ваша схема "наколенного" продукта врядли подойдет. это мое имхо.