Just use the `simple` text search configuration, which works with the [**`simple`** dictionary][1] and does not do any stemming:

    CREATE INDEX tbl USING GIN (to_tsvector('simple', data));

An query accordingly:

    SELECT *
    FROM   tbl
    WHERE  to_tsvector('simple', data) @@ to_tsquery('simple', 'foo');

Related:

- https://dba.stackexchange.com/questions/157951/get-partial-match-from-gin-indexed-tsvector-column/157982#157982
- https://dba.stackexchange.com/questions/145016/finding-the-most-commonly-used-non-stop-words-in-a-column/186754#186754
- https://dba.stackexchange.com/questions/164000/postgresql-full-text-search-on-many-columns/164081#164081


  [1]: https://www.postgresql.org/docs/current/textsearch-dictionaries.html#TEXTSEARCH-SIMPLE-DICTIONARY