tsvector란

tsvector는 postgresql이 제공하는 검색에 최적화된 타입입니다.

보통 tsvector를 사용하는 방법은 이렇습니다.

select to_tsvector('english', $$I went to pizza store to eat pizza$$);
              to_tsvector
----------------------------------------
 'eat':7 'pizza':4,8 'store':5 'went':2
(1 row)

저 위 예시대로 to_tsvector 라는 내장 함수에

  1. 문자열을 어휘소로 쪼개는 방법(예시에는 english를 사용합니다)과
  2. 문자열을 제공하면

postgresql이 tsvector에 어휘소와 어휘소의 위치묶음으로 저장합니다.

그리고 나중에 to_tsquery라는 내장 함수에다가 마찬가지로

  1. 어휘소 쪼개는 방법과
  2. 문자열을 주면

또 문자열을 어휘소로 쪼개주는데 얘를 가지고 tsvector와 비교해서 맞는지 확인하면 됩니다.

select to_tsquery('english', 'hamburger');
 to_tsquery
------------
 'hamburg'
(1 row)

select to_tsvector('english', $$I went to pizza store to eat pizza$$) @@ to_tsquery('english', 'pizza');
 ?column?
----------
 t
(1 row)

select to_tsvector('english', $$I went to pizza store to eat pizza$$) @@ to_tsquery('english', 'hamburger');
 ?column?
----------
 f
(1 row)

근데 한국어를 어휘소로 어떻게 쪼개지?

Postgresql은 기본적으로, 한국어 어휘소 쪼개는 방법은 제공하지 않습니다.