PostgreSQL FTS: when search doesn’t slow down, it flies
At WikiMind, we tuned full-text search on PostgreSQL: tsvector + tsquery and GIN indexes. No separate search engine — fast, simple, and without a zoo of services.

In WikiMind, we tuned full-text search on PostgreSQL: tsvector + tsquery and GIN indexes. Yes, without a separate search engine — in the age of AI search hype, sometimes you just want something simple, fast, and without a zoo of services
What we built:
— fast title search from 2 characters with debounce 300ms, so the UI doesn’t DDoS the database;
— deep content search with contextual snippets — so you don’t have to open a document at random;
— search not only across documents, but also across collections and users: first name, last name, patronymic, email, phone number.
We also paid extra attention to security: search strings are escaped so we don’t end up with SQL injection in tsquery. Because “it’s just search” is the classic line before an incident
Result: relevant, fast, and painless for production.