私はPostgreSQL(バージョン9.4)の何百万(80+ mio)のレコードを複数のカラムにわたって検索する最も速い方法を作成しようとしています。PostgreSQL全文検索サブ文字列を使って検索
は、私が試してみて、標準のPostgreSQLを使用したい、となど
私は現在、全文検索をテストしていますがhttps://blog.lateral.io/2015/05/full-text-search-in-milliseconds-with-postgresql/に続いてSolrありません。
これは機能しますが、より柔軟な検索方法をご希望です。
現在、私にex。 "Volvo"と "Blue"を含むもの私は検索文字列 "volvo blue"でレコードを見つけることができますが、LIKEと "%blu%"を使ったかのように "volvo blu" 。
フルテキスト検索で可能なことですか?
FTSにはプレフィックスマッチング機能がありますが、一般的に効率的に機能するようには設計されていません。 FTSは語彙素性を見つけるために設計されています( '' blue''と '' blue''は一致しませんが、f.ex.' volvo'、 'volvos'と' volvo's')。 - 9.6にアップグレードすることができれば、 'pg_trgm'には素敵な新機能があります:単語の類似性。これはユースケースを処理する可能性があります。 – pozs
9.6はまた、FTSの「フレーズ検索」(複数の隣接単語)のサポートを追加しました。 –
また、別の解決策として、2つのステップで検索を行うことができます。まず、各単語のタイプミスを検索する必要があります( 'pg_trgm'が特に優れています)。一致を見つけたら、エンドユーザーに2番目のステップでそれらを検索することができます(同様に、単語のスペルミス時にGoogleがどのように処理するかをf.ex.と同様)。 – pozs