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:
- Tìm các chuỗi tương tự với PostgreSQL một cách nhanh chóng
- Tìm các bài đăng tương tự với PostgreSQL
- Tìm kiếm đầy đủ văn bản chậm cho các cụm từ có tỷ lệ xuất hiện cao
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: