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

Chuỗi UTF-8 tương tự cho trường tự động hoàn thành

Bạn không sử dụng lớp toán tử do pg_trgm cung cấp mô-đun. Tôi sẽ tạo một chỉ mục như thế này:

CREATE INDEX label_Lower_unaccent_trgm_idx
ON test_trgm USING gist (lower(unaccent_text(label)) gist_trgm_ops);

Ban đầu, tôi có một chỉ mục GIN ở đây, nhưng sau đó tôi biết rằng một GiST có lẽ thậm chí còn phù hợp hơn cho loại truy vấn này vì nó có thể trả về các giá trị được sắp xếp theo sự giống nhau. Thêm chi tiết:

  • Postgresql:Các mẫu đối sánh giữa hai cột
  • Tìm các chuỗi tương tự với PostgreSQL một cách nhanh chóng

Truy vấn của bạn phải khớp với biểu thức chỉ mục để có thể sử dụng nó.

SELECT label
FROM   the_table
WHERE  lower(unaccent_text(label)) % 'fil'
ORDER  BY similarity(label, 'fil') DESC -- it's ok to use original string here

Tuy nhiên, "filbert" và "filé powder" không thực sự giống với "fil" theo toán tử%. Tôi nghi ngờ điều bạn thực sự muốn là cái này:

SELECT label
FROM   the_table
WHERE  lower(unaccent_text(label)) ~~ '%fil%'
ORDER  BY similarity(label, 'fil') DESC -- it's ok to use original string here

Thao tác này sẽ tìm tất cả các chuỗi có chứa chuỗi tìm kiếm và sắp xếp các kết quả phù hợp nhất theo % toán tử đầu tiên.

Và phần hấp dẫn:biểu thức có thể sử dụng chỉ mục GIN hoặc GiST kể từ PostgreSQL 9.1 ! Tôi trích dẫn hướng dẫn trên pg_trgm moule:

Bắt đầu từ PostgreSQL 9.1, các loại chỉ mục này cũng hỗ trợ tìm kiếm chỉ mục cho LIKE và ILIKE, chẳng hạn

Nếu bạn thực sự muốn sử dụng % nhà điều hành:

Bạn đã thử giảm ngưỡng chưa cho toán tử tương tự % với set_limit() :

SELECT set_limit(0.1);

hoặc thậm chí thấp hơn? Giá trị mặc định là 0,3. Chỉ để xem liệu ngưỡng đó có lọc các kết quả phù hợp bổ sung hay không.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bạn cần cài đặt postgresql-server-dev-X.Y để tạo tiện ích mở rộng phía máy chủ hoặc libpq-dev để xây dựng ứng dụng phía máy khách

  2. Số lượng tham số cho phép tối đa cho mỗi loại nhà cung cấp cơ sở dữ liệu là bao nhiêu?

  3. Làm cách nào để đặt cơ sở dữ liệu dưới quyền git (kiểm soát phiên bản)?

  4. Cách định cấu hình sao chép cụm-thành-cụm cho PostgreSQL

  5. Kiểm tra xem một mảng Postgres JSON có chứa một chuỗi hay không