Trong PostgreSQL, kiểu dữ liệu TSVECTOR được sử dụng để hỗ trợ tính năng tìm kiếm văn bản toàn văn (full-text search). Kiểu dữ liệu này giúp PostgreSQL quản lý và xử lý văn bản một cách hiệu quả, cho phép bạn tìm kiếm trong các đoạn văn bản lớn với tốc độ cao và độ chính xác cao. TSVECTOR là một dạng chuẩn hóa của văn bản, giúp lưu trữ các từ khóa của văn bản dưới dạng dễ tìm kiếm và tối ưu hóa.
TSVECTORKhi lưu trữ một văn bản dưới dạng TSVECTOR, PostgreSQL sẽ chuyển đổi văn bản đó thành một danh sách các từ và vị trí của chúng trong văn bản gốc. Quá trình này bao gồm các bước:
TSVECTOR:Giả sử bạn có một đoạn văn bản là:
'The quick brown fox jumps over the lazy dog'
Nếu chuyển đoạn này thành TSVECTOR, nó sẽ trông như sau:
SELECT to_tsvector('english', 'The quick brown fox jumps over the lazy dog');
Kết quả trả về có thể là:
'brown':3 'dog':9 'fox':4 'jump':5 'lazi':8 'quick':2
Ở đây:
TSVECTOR trong Full-Text SearchKiểu dữ liệu TSVECTOR được sử dụng chủ yếu trong các truy vấn tìm kiếm văn bản toàn văn. Khi bạn muốn tìm kiếm một từ hoặc cụm từ trong văn bản, PostgreSQL sẽ so sánh TSVECTOR của văn bản đã lưu trữ với TSQUERY của từ khóa mà bạn muốn tìm kiếm.
Ví dụ:
SELECT to_tsvector('english', 'The quick brown fox jumps over the lazy dog') @@ to_tsquery('quick & fox');
Kết quả trả về là TRUE nếu cả từ “quick” và “fox” đều có trong văn bản.
TSVECTORĐể tăng tốc độ truy vấn tìm kiếm, bạn có thể tạo chỉ mục cho các cột chứa TSVECTOR bằng cách sử dụng GIN (Generalized Inverted Index):
CREATE INDEX idx_tsvector ON my_table USING GIN(to_tsvector('english', my_column));
Chỉ mục này giúp cải thiện đáng kể hiệu suất của các truy vấn tìm kiếm văn bản.
TSVECTORto_tsvector(): Chuyển đổi văn bản thành TSVECTOR.tsvector_update_trigger(): Tự động cập nhật cột TSVECTOR khi cột văn bản tương ứng thay đổi.setweight(): Đặt trọng số cho từ trong TSVECTOR, giúp ưu tiên tìm kiếm các từ quan trọng hơn.Kiểu dữ liệu TSVECTOR trong PostgreSQL là một công cụ mạnh mẽ giúp tối ưu hóa và xử lý các truy vấn tìm kiếm văn bản toàn văn. Với việc sử dụng các tính năng như stemming, stop words, và chỉ mục GIN, PostgreSQL có thể xử lý các truy vấn văn bản lớn một cách hiệu quả, nhanh chóng, và chính xác.