Postgres cung cấp một mô-đun với một số chức năng so sánh chuỗi như soundex và metaphone. Nhưng bạn sẽ muốn sử dụng hàm chỉnh sửa khoảng cách của levenshtein.
Example:
test=# SELECT levenshtein('GUMBO', 'GAMBOL');
levenshtein
-------------
2
(1 row)
2
là khoảng cách chỉnh sửa giữa hai từ. Khi bạn áp dụng điều này với một số từ và sắp xếp theo kết quả chỉnh sửa khoảng cách, bạn sẽ có loại kết hợp mờ mà bạn đang tìm kiếm.
Hãy thử mẫu truy vấn này:(tất nhiên là với tên đối tượng và dữ liệu của riêng bạn)
SELECT *
FROM some_table
WHERE levenshtein(code, 'AB123-lHdfj') <= 3
ORDER BY levenshtein(code, 'AB123-lHdfj')
LIMIT 10
Truy vấn này cho biết:
Cung cấp cho tôi 10 kết quả hàng đầu của tất cả dữ liệu từ some_table trong đó khoảng cách chỉnh sửa giữa giá trị mã và đầu vào 'AB123-lHdfj' nhỏ hơn 3. Bạn sẽ nhận được tất cả các hàng có giá trị của mã chênh lệch trong 3 ký tự đối với ' AB123-lHdfj '...
Lưu ý:nếu bạn gặp lỗi như:
function levenshtein(character varying, unknown) does not exist
Cài đặt fuzzystrmatch
tiện ích mở rộng sử dụng:
test=# CREATE EXTENSION fuzzystrmatch;