こんにちは、バージョン 9.2.2 を使用して postgres で全文検索を使用する方法を学習しようとしています。
Here is my database:
title : character varying(1024)
body : text
body_title_tsv | tsvector
次に body_title_tsv を body フィールドと title フィールドから構成される ts_vector に定義し、null を処理するために合体させました。
UPDATE pg_rocks_post SET body_title_tsv = to_tsvector( coalesce(body,'') || coalesce (title,''));
「タイトル」や「本文」の更新を処理する TRIGGER の書き方を知りたいです。
このような構文と tsearch2 関数を使用してトリガーを作成できることはわかっています。
CREATE TRIGGER body_title_tsv_trig BEFORE UPDATE OR INSERT on pg_rocks_post
FOR EACH ROW EXECUTE PROCEDURE tsearch2(body_title_tsv , title);
タイトルの代わりに本文でも同じことができます。
私の質問は、2 つを組み合わせて body_title_tsv を更新する方法です。
または、UPDATE が発生したときに body_title_tsv の SQL を本質的に実行する独自の関数を作成する方法を学ぶ必要がありますか? .
この問題に対処するもう 1 つの方法は、INDEX を作成することです。しかし、Kory と Susan Douglas による PostgreSQL の本で、トリガーの書き方と tsearch2 を使用する例を読む方法を理解しようとしています。
編集:これを行うこの関数に出くわしました。「tsvector_update_trigger」関数です。tsearch2 を使用してこれを行う方法があるかどうかを知りたいと思っています。
create trigger body_title_tsv_trig BEFORE UPDATE OR INSERT on pg_rocks_post FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(body_title_tsv,'pg_catalog.english',title,body);