Я бы порекомендовал использовать Lucene, хотя я думаю, что Postgres - отличный продукт. Алгоритмы Lucene отлично работают "из коробки" для поиска текста на естественном языке. Другими словами, когда вы просто создаете простейший из возможных поисков, он просто «делает правильные вещи» (то есть то, что ваша интуиция подсказывает, что он должен делать).
Postgres делает RDb Mgt очень хорошо. Вот для чего он был разработан. Но сравните реализацию следующего на обоих:
Search for "google" or "yahoo" or "msn" followed by "search engine".
Теперь повторно используйте тот же код запроса для выполнения следующего поиска:
Search for "google" and "yahoo" and "msn" and "search engine".
Представьте, что потребуется для реализации запроса в NHibernate.Search против Postgresql. Не нужно много времени, чтобы убедить себя, что с помощью NHibernate проще создать гибкую функциональность текстовых запросов. Это просто более естественно подходит для этого.