Postgresql prefix wildcard for full text
Full text search is good for finding words, not substrings.
For substring searches you'd better use like '%don%'
with pg_trgm
extension available from PostgreSQL 9.1 and using gin (column_name gin_trgm_ops)
or using gist (column_name gist_trgm_ops)
indexes. But your index would be very big (even several times bigger than your table) and write performance not very good.
There's a very good example of using pg_trgm for substring search on select * from depesz blog.
One wild and crazy way of doing it would be to create a tsvector index of all your documents, reversed. And reverse your queries for postfix search too.
This is essentially what Solr does with its ReversedWildcardFilterFactory
selectreverse('brown fox')::tsvector @@ (reverse('rown') || ':*')::tsquery --true