tsvector
tsvector
を使用します タイプ。これはPostgreSQLのテキスト検索機能の一部です。
postgres> select 'What are Q-type Operations?'::tsvector;
tsvector
-------------------------------------
'Operations?' 'Q-type' 'What' 'are'
(1 row)
tsvectorでもおなじみの演算子を使用できます:
postgres> select 'What are Q-type Operations?'::tsvector
postgres> || 'A.B.C''s of Coding'::tsvector;
?column?
--------------------------------------------------------------
'A.B.C''s' 'Coding' 'Operations?' 'Q-type' 'What' 'are' 'of'
一般的な単語(「the」、「a」など)の削除や乗算など、言語固有の正規化も行う場合は、to_tsvector
を使用します。 関数。また、テキスト検索用にさまざまな単語に重みを割り当てます:
postgres> select to_tsvector('english',
postgres> 'What are Q-type Operations? A.B.C''s of Coding');
to_tsvector
--------------------------------------------------------
'a.b.c':7 'code':10 'oper':6 'q':4 'q-type':3 'type':5
(1 row)
本格的なテキスト検索
明らかに、クエリのすべての行に対してこれを行うとコストがかかるため、tsvectorを別の列に格納し、ts_query()を使用して検索する必要があります。これにより、tsvectorにGiSTインデックスを作成することもできます。
postgres> insert into text (phrase, tsvec)
postgres> values('What are Q-type Operations?',
postgres> to_tsvector('english', 'What are Q-type Operations?'));
INSERT 0 1
検索は、tsqueryと@@演算子を使用して行われます:
postgres> select phrase from text where tsvec @@ to_tsquery('q-type');
phrase
-----------------------------
What are Q-type Operations?
(1 row)