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件の結果を教えてください。コードの値が「」との差が3文字以内であるすべての行が返されます。 AB123-lHdfj'...
注:次のようなエラーが発生した場合:
function levenshtein(character varying, unknown) does not exist
fuzzystrmatch
をインストールします 使用する拡張機能:
test=# CREATE EXTENSION fuzzystrmatch;