Tôi hơi bối rối với toàn bộ khái niệm về PostgreSQL, tìm kiếm toàn văn và Trigram. Trong các truy vấn tìm kiếm văn bản đầy đủ của tôi, tôi đang sử dụng tsvectors, như vậy:Tìm kiếm văn bản đầy đủ của PostgreSQL và Trigram Confusion
SELECT * FROM articles
WHERE search_vector @@ plainto_tsquery('english', 'cat, bat, rat');
Vấn đề là, phương pháp này không có lỗi chính tả. Sau đó, tôi bắt đầu đọc về Trigram and pg_trgm
:
Nhìn qua các ví dụ khác, có vẻ như sử dụng trigram hoặc vectơ nhưng không bao giờ cả hai. Vì vậy, câu hỏi của tôi là: Họ có bao giờ được sử dụng cùng nhau? Nếu vậy, làm thế nào? Trigram có thay thế toàn văn không? Trigram có chính xác hơn không? Và làm thế nào là trigrams về hiệu suất?
Tôi đã thêm một vài ví dụ để làm nổi bật sự khác nhau giữa '%' và ' @@ 'từ mỗi phần mở rộng. Nếu mục đích của bạn là tìm các tài liệu có chứa tiếng Anh (hoặc bất kỳ ngôn ngữ nào mà bạn có từ điển), thì bạn sẽ có toàn văn. Nếu mục đích của bạn là khớp một trường toàn bộ với một chuỗi của toàn bộ trường với một chút leeweigh cho lỗi chính tả, thì pg_trgm là những gì bạn muốn. –
Cảm ơn bạn đã giải thích! Điều đó xóa nó rất nhiều. Ok, có vẻ như vấn đề có thể được giải quyết bằng cách mở rộng kiến thức về từ điển của tôi. –
+1 Câu trả lời hay, rõ ràng. –