Postgres は、soundex や metaphone などのいくつかの文字列比較関数を備えたモジュールを提供します。ただし、レーベンシュタイン編集距離関数を使用する必要があります。
Example:
test=# SELECT levenshtein('GUMBO', 'GAMBOL');
levenshtein
-------------
2
(1 row)
は2
、2 つの単語間の編集距離です。これをいくつかの単語に対して適用し、編集距離の結果で並べ替えると、探しているタイプのあいまい一致が得られます。
このクエリ サンプルを試してください: (もちろん、独自のオブジェクト名とデータを使用して)
SELECT *
FROM some_table
WHERE levenshtein(code, 'AB123-lHdfj') <= 3
ORDER BY levenshtein(code, 'AB123-lHdfj')
LIMIT 10
このクエリは次のように述べています。
コード値と入力 'AB123-lHdfj' の間の編集距離が 3 未満である some_table からのすべてのデータの上位 10 件の結果を教えてください。 AB123-lHdfj'...
注: 次のようなエラーが発生した場合:
function levenshtein(character varying, unknown) does not exist
fuzzystrmatch
次を使用して拡張機能をインストールします。
test=# CREATE EXTENSION fuzzystrmatch;