私はpostgresで全文検索を実装しています。
システム内のすべての投稿を検索したいと思います。投稿の全文索引は、投稿のタイトルと本文を組み合わせたものです。
これを達成する方法は2つあります。
- 投稿テーブルにtsvector列を作成し、更新をトリガーします。
- インデックスデータを含むpost_id列とtsvector列を使用して2番目のテーブル(posts_search)を作成します。
- 単純なジンインデックスを作成します...(問題外ですが、私の現実の問題では、インデックス用に複数のテーブルのデータが必要です)
テーブル内の他の属性(など)で検索をフィルタリングする必要がある場合があることを考えると、パフォーマンスは向上しますdeleted_at is null
。
tsvector列をデータと同じテーブル(副作用select *は最悪)または別のテーブル(副作用、結合が必要、インデックスフィルタリングが複雑)に保持する方が良いアプローチですか?