2009-06-11 11 views
2

私は約500万レコードのPostgresテーブルを持っており、入力キーに最も近いものを探したいと思っています。私はpg_trgmモジュールでトリグラムを使ってみましたが、クエリあたり約5秒かかってしまいました。これは私のニーズにとっては遅すぎます。pg_trgmよりも速いpostgresファジーマッチはありますか?

Postgresでファジーマッチを行う方法はありますか?

+0

どのようにキーが構成されていますか?英数字ですか? intのみ? –

+0

インデックスはtext型の属性に基づいて構築されています。 –

+0

あなたのクエリの "explain analyze"の出力を表示してください。 – Tometzky

答えて

0

Soundexは、代替ファジーマッチですが、非常にファジーです。あなたができるならば、私はトリグラムマッチングに固執するでしょう。トライグラム検索をより小さな結果で実行するために使用できるもう1つの基準はありますか?

1

説明出力の結果サイズの見積もりが途切れているようです。フルテキスト検索の結果を見積もることは非常に難しいので、これは予期しないことではありません。

これにより、PostgreSQLは不正なクエリプランを使用します。ビットマップスキャンを無効にして(enable_bitmapscan = offを設定)、再試行してください。

0

あなたが探しているものによっては、Postgresは標準的な「like」の構文ではなく、正規表現でマッチを行うこともできます。それはあなたに適しているかもしれません。

関連する問題