RSS DEV コミュニティ

PostgreSQL フルテキスト検索の位置別ランキング

著者は、PostgreSQLでブログ投稿タイトルのフルテキスト検索を最適化する方法を説明します。 最初に、`to_tsvector`が動的に使用され、遅さが生じました。 パフォーマンスを向上させるために、事前に処理されたtsvectorを格納する`search_vector`列が追加され、GINでインデックス付けられました。 これにより、`to_tsquery`を使用した検索が大幅に向上しました。 PostgreSQLの`ts_rank`関数は、結果のランキングを提供しますが、位置ベースのランキングがありません。 `POSITION`関数が使用され、検索語のタイトル内の位置を決定しました。 カスタムランキングが作成され、`ts_rank`と位置の逆数を組み合わせて関連性スコアリングを向上させました。 小さな調整でゼロ除算を避けます。 最後のクエリーは、この組み合わせられたランキングで結果を並べ替えます。 このソリューションは、単語検索に対してはうまく機能します。 しかし、複数の語を検索するには、`POSITION`の制限と`to_tsquery`の柔軟性との比較で注意が必要です。 著者は、関連するPostgreSQLドキュメントへのリンクも提供します。
favicon
dev.to
PostgreSQL Full Text Search Rank by Position