@iabot вам надо максимально свернуть текст, затем получить его хэш и для каждой фразы хранить в бд ее хэш, а поиск производить по хэшу. Гуглите алгоритмы сравнения текста, задача не самая тривиальная, если делать по уму.
Или можно использовать какой-нибудь готовый движок для полнотекстового поиска
Это давно можно делать. Не так просто, но за то гибко. Запускаем основные части скрипта через "функцию в несколько потоков", а когда эта функция отрабатывает, запускаем функцию, которая выполняет завершающие действия.