表9-36、 表9-37および 表9-38は全文検索用に提供されている関数と演算子を要約しています。PostgreSQLのテキスト検索機能の詳細は第12章を参照してください。
表 9-36. テキスト検索演算子
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
@@ | tsvectorがtsqueryに一致するか? | to_tsvector('fat cats ate rats') @@ to_tsquery('cat & rat') | t |
@@@ | @@に対する廃止予定の同義語 | to_tsvector('fat cats ate rats') @@@ to_tsquery('cat & rat') | t |
|| | tsvector(複数)を連結 | 'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector | 'a':1 'b':2,5 'c':3 'd':4 |
&& | tsquery(複数)をともに積 | 'fat | rat'::tsquery && 'cat'::tsquery | ( 'fat' | 'rat' ) & 'cat' |
|| | tsquery(複数)をともに和 | 'fat | rat'::tsquery || 'cat'::tsquery | ( 'fat' | 'rat' ) | 'cat' |
!! | tsqueryを否定 | !! 'cat'::tsquery | !'cat' |
@> | tsqueryは他を包含するか? | 'cat'::tsquery @> 'cat & rat'::tsquery | f |
<@ | tsqueryは包含されるか? | 'cat'::tsquery <@ 'cat & rat'::tsquery | t |
注意: tsquery格納演算子は結合された演算子を無視し、2つの問い合わせでリストされた語彙素のみを対象とします。
表に示された演算子に加え、通常のB-tree比較演算子(=、<など)が、型tsvectorおよびtsqueryに対して定義されます。これらはテキスト検索に対してそれほど有用ではありませんが、例えばこれらの型の列に一意インデックスを作成することを許可します。
表 9-37. テキスト検索関数
関数 | 戻り値型 | 説明 | 例 | 結果 | |
---|---|---|---|---|---|
to_tsvector ([ config regconfig , ] document text) | tsvector | ドキュメントテキストをtsvectorに縮小 | to_tsvector('english', 'The Fat Rats') | 'fat':2 'rat':3 | |
length (tsvector) | integer | tsvectorにある語彙素の数 | length('fat:2,4 cat:3 rat:5A'::tsvector) | 3 | |
setweight (tsvector, "char") | tsvector | tsvectorのそれぞれの要素に重みを割り当て | setweight('fat:2,4 cat:3 rat:5B'::tsvector, 'A') | 'cat':3A 'fat':2A,4A 'rat':5A | |
strip (tsvector) | tsvector | tsvectorから位置と重みを削除 | strip('fat:2,4 cat:3 rat:5A'::tsvector) | 'cat' 'fat' 'rat' | |
to_tsquery ([ config regconfig , ] query text) | tsquery | 単語(複数)を正規化しtsqueryに変換 | to_tsquery('english', 'The & Fat & Rats') | 'fat' & 'rat' | |
plainto_tsquery ([ config regconfig , ] query text) | tsquery | 句読点を無視して、tsqueryを作成 | plainto_tsquery('english', 'The Fat Rats') | 'fat' & 'rat' | |
numnode (tsquery) | integer | tsqueryにある語彙素と演算子の数 | numnode('(fat & rat) | cat'::tsquery) | 5 | |
querytree (query tsquery) | text | tsqueryのインデックス付け可能部分の取得 | querytree('foo & ! bar'::tsquery) | 'foo' | |
ts_rank ([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) | float4 | 問い合わせのためのドキュメント順位付け | ts_rank(textsearch, query) | 0.818 | |
ts_rank_cd ([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) | float4 | cover densityを用いた問い合わせのためのドキュメント順位付け | ts_rank_cd('{0.1, 0.2, 0.4, 1.0}', textsearch, query) | 2.01317 | |
ts_headline ([ config regconfig, ] document text, query tsquery [, options text ]) | text | 問い合わせによるマッチを表示 | ts_headline('x y z', 'z'::tsquery) | x y <b>z</b> | |
ts_rewrite (query tsquery, target tsquery, substitute tsquery) | tsquery | 問い合わせ内で対象を代替と置換 | ts_rewrite('a & b'::tsquery, 'a'::tsquery, 'foo|bar'::tsquery) | 'b' & ( 'foo' | 'bar' ) | |
ts_rewrite (query tsquery, select text) | tsquery | SELECTから対象と代替を使用して置換 | SELECT ts_rewrite('a & b'::tsquery, 'SELECT t,s FROM aliases') | 'b' & ( 'foo' | 'bar' ) | |
get_current_ts_config () | regconfig | デフォルトのテキスト検索構成を設定 | get_current_ts_config() | english | |
tsvector_update_trigger () | trigger | tsvector列自動更新のため関数をトリガ | CREATE TRIGGER ... tsvector_update_trigger(tsvcol, 'pg_catalog.swedish', title, body) | ||
tsvector_update_trigger_column () | trigger | tsvector列自動更新のため関数をトリガ | CREATE TRIGGER ... tsvector_update_trigger_column(tsvcol, configcol, title, body) |
注意: オプションのregconfig引数を受け付ける全てのテキスト検索関数は、その引数が省略された場合default_text_search_configで指定された構成を使用します。
表9-38の関数は、日常のテキスト検索操作では通常使用されないので、別途リストされます。
表 9-38. テキスト検索デバッグ関数
関数 | 戻り値型 | 説明 | 例 | 結果 |
---|---|---|---|---|
ts_debug ([ config regconfig, ] document text, OUT alias text, OUT description text, OUT token text, OUT dictionaries regdictionary[], OUT dictionary regdictionary, OUT lexemes text[]) | setof record | 構成を検査 | ts_debug('english', 'The Brightest supernovaes') | (asciiword,"Word, all ASCII",The,{english_stem},english_stem,{}) ... |
ts_lexize (dict regdictionary, token text) | text[] | 辞書を検査 | ts_lexize('english_stem', 'stars') | {star} |
ts_parse (parser_name text, document text, OUT tokid integer, OUT token text) | setof record | パーサを検査 | ts_parse('default', 'foo - bar') | (1,foo) ... |
ts_parse (parser_oid oid, document text, OUT tokid integer, OUT token text) | setof record | パーサを検査 | ts_parse(3722, 'foo - bar') | (1,foo) ... |
ts_token_type (parser_name text, OUT tokid integer, OUT alias text, OUT description text) | setof record | パーサで定義されたトークンの型を入手 | ts_token_type('default') | (1,asciiword,"Word, all ASCII") ... |
ts_token_type (parser_oid oid, OUT tokid integer, OUT alias text, OUT description text) | setof record | パーサで定義されたトークンの型を入手 | ts_token_type(3722) | (1,asciiword,"Word, all ASCII") ... |
ts_stat (sqlquery text, [ weights text, ] OUT word text, OUT ndoc integer, OUT nentry integer) | setof record | tsvector列の統計情報を入手 | ts_stat('SELECT vector from apod') | (foo,10,15) ... |