約 150 万レコードの Postgres データベースがあります。私の Ruby on Rails アプリでは、statement_textフィールド (1 から数百の単語を含む可能性があります) を検索する必要があります。
私の問題: pgSearchgem を使用してsearch_all_wordsやのようなスコープを作成できることはわかっていますが、正確に一致するレコードのみが結果セットに返されるsearch_any_wordsようにする最も効率的な方法が何であるかはわかりません。
つまり、"Pope Francis" を検索する場合、これらの 2 つの単語が連続していて同じ順序である場合にのみ検索する必要があります (たとえば、"教皇の名前は Francis" ではありません)。
これまでのところ、GIN インデックスとILIKE完全一致検索を組み合わせただけです。しかし、GIN インデックスが基本的にすべてのレコード内の単語の正確な位置を格納することILIKEによって機能することを考えると、検索語がフィールドと完全に一致することを保証するより効率的な (非) 方法があるはずではありませんか?