I would recommend using Lucene, although I think Postgres is a great product. Lucene algorithms work perfectly out of the box for natural language searches. In other words, when you simply build the simplest possible search, it seems that it is “doing the right thing” (that is, what your intuition would suggest that he do).
Postgres does RDb Mgt very well. This is what it was intended for. But compare the implementation of the following two:
Search for "google" or "yahoo" or "msn" followed by "search engine".
Now reuse the same request code to perform the following search:
Search for "google" and "yahoo" and "msn" and "search engine".
Imagine what it takes to complete a query in NHibernate.Search and Postgresql. You don’t need to convince yourself for a long time that it’s easier to create flexible text query functions with NHibernate. This is more natural for this.