Super Fuzzy Searching on PostgreSQL
bartlettpublishing.com
bartlettpublishing.com
[0] http://blog.lostpropertyhq.com/postgres-full-text-search-is-...
Of course, this means that your fuzzy search capability will lag somewhat behind live data in the case where a new distinct word has just been added to the corpus, but in many cases this is acceptable: people looking for recently created records will most likely have some exact reference for them, and will only resort to using fuzzy search to find older records for which their reference is rather more, well, fuzzy.
See also the smlar extension (by one of the text search authors). Let's you do TFIDF
I'd kill for BM25 and Solr style filters though...
In the meantime, I can recommend Sphinx Search: http://en.wikipedia.org/wiki/Sphinx_(search_engine)
(I am not related to it, just a happy user)
We are currently in the process of shifting everything to RT indexes and have been absolutely delighted with the new beta features.
Gin indexes can certainly be used with the trigram extension, in exactly the same way as the gist ones, and you would generally tend to expect gin to be faster for queries, but slower for updates and inserts, compared to gist, though I've never done a serious comparison on trigram data.
It's also a bit shortsighted to look at the index maintenance in isolation - when your workload is 99% reads, and queries with GIN indexes are way faster, it's probably more efficient to use GIN indexes.
Moreover, there are often more expensive parts when inserting/updating data (either inside the database, or in the application), so the index maintenance is not really the main problem.
I'm sure there are workloads where it's still true, though.
The nature of data being indexed is probably the biggest determinant: gin is really happy when you have a small number of distinct values across a large dataset; I guess at the opposite end of the scale gist might come into it's own.