PostgreSQLをリレーショナルデータストレージとして使用するWebアプリケーションで全文検索を行うには、次のような戦略があります。例えば、私はInvoices
テーブルを取るでしょう。私は、フルテキスト検索クエリが、私は上のtsv
フィールドを更新する更新トリガーを設定しているすべてのフルテキスト検索テーブルの上にこの... WHERE tsv @@ to_tsquery('query:*') ...
リレーショナルデータの変更時にPostgreSQL全文検索フィールドを更新するには
のように行われた上で一つの追加フィールドALTER TABLE invoices ADD COLUMN tsv tsvector
を持つテーブルで
レコードのすべての変更。更新は、さまざまなフィールドのデータを設定し、
tsv
フィールドに連結し、右の重みなどを設定します。tsv
フィールドに設定されるデータは、他のテーブルのリレーショナルデータでもあります。例からテーブルinvoices
に私がclient_id
フィールドを持っていますが、私も私もinvoices.tsv
フィールドのclients.client_name
データ
を含め、クライアント名で請求書を検索したいので、私の質問は、関係を維持するための最善の戦略は何かということですtsvセレクタのデータを同期させます。上記のシナリオでは - >クライアント名が変更された場合は、私はtsv
フィールドを更新する必要があります。
毎晩このような設定が必要ですか?それはトリガーでも行うことができますが、私のデータベーススキーマが非常に大きいので、私はトリガーを全面的に持っているとコントロールが崩れてしまう恐れがあります。