Я не запускал postgres на производстве, но я играл с ним на тестовой БД с довольно значительным (я думаю) объемом данных. Индексирование около 600 000 строк текстовых строк, в среднем 3 слова, создает полнотекстовый индекс размером 120 МБ. Запросы очень быстры к этому индексу после первого для каждого поискового запроса. Похоже, что индекс для каждого термина должен быть извлечен с диска в память. Я еще не нашел способ вытянуть весь индекс в память при запуске. Отчасти начальная медлительность может быть связана с дисковым вводом-выводом, поскольку я работаю на одном ноутбуке HD. Я также не уверен, что для индекса 120 МБ потребуется 120 МБ памяти БД или более.
Для производственного приложения мы используем Lucene для Java, и оно работает очень хорошо - ответы в секунду, с несколькими ГБ индексных данных. Преимущество Lucene, которое я вижу, состоит в том, что 1) он независим от БД и 2) распространяется. Для # 1 это может не быть проблемой, но это означает, что вы можете использовать один и тот же код индексации независимо от того, какая у вас базовая БД. Для # 2 это зависит от того, насколько большим будет приложение. Lucene (и особенно Hadoop) разработаны для многопоточности, поэтому вы можете хранить индекс на общем диске и одновременно выполнять поиск на нескольких машинах (обратите внимание, что индексирование все еще однопоточное). Хотите вы этого или нет, зависит от вашей архитектуры. Вы бы предпочли иметь 1 большую БД или 1 маленькую / среднюю БД плюс несколько небольших серверов индексирования, поддерживающих ее?