PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để tạo tìm kiếm mờ đơn giản chỉ với PostgreSQL?

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm truy vấn động Postgres

  2. CASCADE XÓA chỉ một lần

  3. Câu lệnh INSERT INTO có điều kiện trong postgres

  4. Một ràng buộc Postgres UNIQUE có bao hàm một chỉ mục không?

  5. Các cách truy cập Cơ sở dữ liệu Oracle trong PostgreSQL