The query matches the index, why is doing Seq Scan on movies? It should be using Bitmap Heap Scan.
psql (PostgreSQL) 15.4 (Homebrew)
Index:
CREATE INDEX movies_title_searchable ON movies USING gin(to_tsvector('english', title));
Query:
EXPLAIN ANALYZE
SELECT title
FROM movies
WHERE to_tsvector('english', title) @@ to_tsquery('english', 'night & day') LIMIT 1;
-> Seq Scan on movies (cost=0.00..2.31 rows=1 width=32) (actual time=0.035..0.035 rows=1 loops=1)
Filter: (to_tsvector('english'::regconfig, title) @@ '''night'' & ''day'''::tsquery)
Rows Removed by Filter: 3
Apparently, postgres won't use the index due the table size (too small).