tsvector 와 tsquery
PostgreSQL 이 완전한 full-text search 엔진 ship. tsvector 가 정규화 + stem 된 lexeme 저장; tsquery 가 검색 쿼리 표현. 매치 연산자 @@ 가 tsvector 가 tsquery 매치하는지 테스트. GIN 인덱스 있으면 수백만 document 가로질러 ms 단위 검색.
구성 요소
to_tsvector('english', text)— 텍스트를 정규화 vector 로.to_tsquery('english', 'postgres & performance')— 쿼리 파싱.plainto_tsquery/websearch_to_tsquery— 친절한 쿼리 파서.ts_rank/ts_rank_cd— relevance 점수.ts_headline— 매치 term highlight 한 snippet 생성.
tsvector 저장
성능 위해, tsvector 를 generated column 으로 materialise + GIN 인덱스. write 시 변환 한 번 계산 → 모든 검색에 재사용.