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

PostgreSQL Full Text Search và Trigram Confusion

Chúng phục vụ những mục đích rất khác nhau.

  • Tìm kiếm Toàn văn được sử dụng để trả về các tài liệu phù hợp với truy vấn tìm kiếm gồm các từ gốc.
  • Trigram cung cấp cho bạn một phương pháp để so sánh hai chuỗi và xác định chúng trông giống nhau như thế nào.

Hãy xem xét các ví dụ sau:

SELECT 'cat' % 'cats'; --true

Ở trên trả về true vì 'cat' khá giống với 'cat' (theo quy định của giới hạn pg_trgm).

SELECT 'there is a cat with a dog' % 'cats'; --false

Ở trên trả về false bởi vì % đang tìm kiếm một cách tương tự giữa toàn bộ hai chuỗi, không tìm từ cats trong vòng chuỗi.

SELECT to_tsvector('there is a cat with a dog') @@ to_tsquery('cats'); --true

Điều này trả về true Bởi vì tsvector đã chuyển chuỗi thành một danh sách các từ có gốc và bỏ qua một loạt các từ phổ biến (các từ dừng - như 'is' &'a') ... sau đó tìm kiếm phiên bản gốc của cats .

Có vẻ như bạn muốn sử dụng gương bát quái để tự động sửa ts_query của bạn nhưng điều đó không thực sự khả thi (dù sao thì cũng không hiệu quả). Họ không thực sự biết một từ sai, giống như nó có thể giống như thế nào với một từ khác. Họ có thể được sử dụng để tìm kiếm một bảng từ để thử và tìm các từ tương tự, cho phép bạn triển khai tính năng loại "ý bạn là ...", nhưng từ này yêu cầu duy trì một bảng riêng chứa tất cả các từ được sử dụng trong tìm kiếm search trường.

Nếu bạn có một số từ / cụm từ thường sai chính tả mà bạn muốn chỉ mục văn bản khớp, bạn có thể muốn xem Từ điển từ đồng nghĩa




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hoạt động của hàm to_number () trong PostgreSQL

  2. Trừ số ngày cho một ngày trong PostgreSQL

  3. Kiểm tra xem NULL có tồn tại trong mảng Postgres không

  4. Làm cách nào để xoay nhật ký PgBouncer trong Linux / Windows?

  5. Định dạng số với dấu phẩy trong PostgreSQL