Great, I'll have to take a look at this. Are you indexing database entries?
I spend about a half day earlier this week looking at swish-e, swish++, and some variations on the existing keyword search scheme that barely exists as contributed code in PG.
swish++ allows incremental updates of the index file - important for indexing things like bboard entries. However my quick poking around didn't see any concurrency protection ...
swish-e 2.0 (in beta, but seems to work OK in my experimenting) has a phrase-search facility as well as the keyword-based search of swish-e 1.* and swish++. This would be nice to have.
Integrating C++ code into PG is an interesting proposition, not sure it is practical in a portable way - it might be nice to have functions to search the index that can be incorporated into queries to pull stuff from module tables like the bboard table. So swish++ may not be the ideal solution.
On the other hand, swish-e doesn't handle incremental updates of the index, though it should be easy to add.
I'll have some more comments in a day or two, before I leave for Nevada.