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.
TSVECTOR
Khi 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.
TSVECTOR
to_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.