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

PostgreSQL:Tìm câu gần nhất với một câu nhất định

Tìm kiếm toàn văn bản (FTS)

Bạn có thể sử dụng plainto_tsquery() tới ( theo tài liệu ) ...

SELECT plainto_tsquery('english', 'Sentence: with irrelevant words (and punctuation) in it.')

 plainto_tsquery
------------------
 'sentenc' & 'irrelev' & 'word' & 'punctuat'

Sử dụng nó như:

SELECT *
FROM   tbl
WHERE  to_tsvector('english', sentence) @@ plainto_tsquery('english', 'My new sentence');

Nhưng điều đó vẫn khá nghiêm ngặt và chỉ cung cấp khả năng tương tự rất hạn chế.

Sự giống nhau về hình tam giác

Có thể phù hợp hơn để tìm kiếm điểm tương đồng , thậm chí khắc phục lỗi chính tả ở một mức độ nào đó.

Cài đặt mô-đun bổ sung pg_trgm , tạo chỉ mục GiST và sử dụng toán tử tương tự % trong tìm kiếm hàng xóm gần nhất :

Về cơ bản, với chỉ mục GiST hình tam giác trên sentence :

-- SELECT set_limit(0.3);  -- adjust tolerance if needed

SELECT *
FROM   tbl
WHERE  sentence % 'My new sentence'
ORDER  BY sentence <-> 'My new sentence'
LIMIT  10;

Thêm:

Kết hợp cả hai

Bạn thậm chí có thể kết hợp FTS và độ tương đồng của bát quái:



  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ập nhật bảng và thêm dữ liệu trong Di chuyển Laravel 5

  2. HikariCP - kết nối không khả dụng

  3. Đối số dòng lệnh PSQL trong tập lệnh DO

  4. cách làm cho array_agg () hoạt động giống như group_concat () từ mySQL

  5. postgreSQL thay đổi kiểu dữ liệu cột thành dấu thời gian không có múi giờ