Postgres menyediakan modul dengan beberapa fungsi perbandingan string seperti soundex dan metaphone. Tetapi Anda akan ingin menggunakan fungsi edit jarak levenshtein.
Example:
test=# SELECT levenshtein('GUMBO', 'GAMBOL');
levenshtein
-------------
2
(1 row)
2
adalah jarak edit antara dua kata. Saat Anda menerapkan ini pada sejumlah kata dan mengurutkan berdasarkan hasil edit jarak, Anda akan memiliki jenis pencocokan fuzzy yang Anda cari.
Coba contoh kueri ini:(tentu saja dengan nama objek dan data Anda sendiri)
SELECT *
FROM some_table
WHERE levenshtein(code, 'AB123-lHdfj') <= 3
ORDER BY levenshtein(code, 'AB123-lHdfj')
LIMIT 10
Kueri ini mengatakan:
Beri saya 10 hasil teratas dari semua data dari some_table di mana jarak edit antara nilai kode dan input 'AB123-lHdfj' kurang dari 3. Anda akan mendapatkan kembali semua baris di mana nilai kode berada dalam perbedaan 3 karakter menjadi ' AB123-lHdfj'...
Catatan:jika Anda mendapatkan kesalahan seperti:
function levenshtein(character varying, unknown) does not exist
Instal fuzzystrmatch
ekstensi menggunakan:
test=# CREATE EXTENSION fuzzystrmatch;