The user directory has a basic LIKE search that is slow on large datasets. This PR replaces it with PostgreSQL full-text search (tsvector / tsquery), with a LIKE fallback if the FTS query fails. Review for injection vulnerabilities, query correctness, and result safety.