Возможно я не понимаю сложности всей задачи, просто опишу как это сделано у меня.
Сделана Задача "тефонный справочник" с полнотекстновым поиском в с справочнике есть и адрес и телефон и вид деятельности и еще что то :) Причем поиск может делаться и по части слов т.е. не обязательно с первой буквы, я принял единственное ограничение что длинна слов не менее 2х и не более 8ми букв. т.е. слово "машина" генерирует такие ключевые слова (машина, ашина, шина, ина, на) кажется как то так. Сильно не ругайте давно дело было. Составляется общий словарь ключевых слов, где для каждого слова хранитсья сортированный список кодов объектов из базы в которых данные слова встретелисть. Далее пользователь вводит слова. Система нраходить их в словаре. далее начинает работать простой алогоритм который строит пересечение всех наборов кодов объектов найденных для всех слов. т.к. списки кодов объектов отсортированны это по моему довольно очевидно. Это напоминает алгоритм сортировки слиянием. Работает очень прилично. В базе было 200 000 объектов. Количество слов не помню.

