Tìm kiếm toàn văn là một phương pháp cho phép người dùng tìm kiếm các từ khóa trong các trường văn bản không cấu trúc. PostgreSQL cung cấp một công cụ tìm kiếm toàn văn mạnh mẽ, cho phép bạn thực hiện các truy vấn phức tạp trên dữ liệu văn bản với hiệu suất cao.
Đảm bảo rằng bạn đã cài đặt PostgreSQL trên máy của mình. Nếu chưa, hãy tải và cài đặt từ trang web chính thức.
Tạo một bảng với các cột kiểu văn bản mà bạn muốn thực hiện tìm kiếm toàn văn. Ví dụ:
CREATE TABLE articles ( id SERIAL PRIMARY KEY, title TEXT, body TEXT );
Nhập một số dữ liệu vào bảng để bạn có thể thử nghiệm:
INSERT INTO articles (title, body) VALUES ('PostgreSQL Basics', 'This article covers the basics of PostgreSQL.'), ('Advanced PostgreSQL', 'This article delves into advanced PostgreSQL features.');
Trước khi thực hiện tìm kiếm, bạn cần tạo chỉ mục cho các cột văn bản mà bạn muốn tìm kiếm. Sử dụng GIN
index cho tìm kiếm toàn văn:
CREATE INDEX idx_gin_fts ON articles USING GIN (to_tsvector('english', body));
Sử dụng hàm to_tsvector
để phân tích văn bản thành các từ khóa:
SELECT to_tsvector('english', body) FROM articles;
Sử dụng hàm to_tsquery
để tìm kiếm văn bản trong cột body
:
SELECT * FROM articles WHERE to_tsvector('english', body) @@ to_tsquery('PostgreSQL');
Bạn có thể tìm kiếm nhiều từ khóa bằng cách sử dụng toán tử AND
, OR
, hoặc NOT
:
SELECT * FROM articles WHERE to_tsvector('english', body) @@ to_tsquery('PostgreSQL & basics');
ts_rank
Bạn có thể sử dụng hàm ts_rank
để xếp hạng kết quả tìm kiếm dựa trên độ tương đồng:
SELECT id, title, ts_rank(to_tsvector('english', body), to_tsquery('PostgreSQL')) AS rank FROM articles WHERE to_tsvector('english', body) @@ to_tsquery('PostgreSQL') ORDER BY rank DESC;
PostgreSQL hỗ trợ nhiều ngôn ngữ khác nhau. Bạn có thể thay đổi ngôn ngữ trong hàm to_tsvector
và to_tsquery
:
SELECT * FROM articles WHERE to_tsvector('french', body) @@ to_tsquery('PostgreSQL');
Nếu bạn không còn cần chỉ mục tìm kiếm nữa, bạn có thể xóa nó:
DROP INDEX idx_gin_fts;
Tìm kiếm toàn văn trong PostgreSQL là một công cụ mạnh mẽ giúp bạn thực hiện các truy vấn phức tạp trên dữ liệu văn bản một cách hiệu quả. Qua các bước hướng dẫn trên, bạn đã có thể tạo bảng, nhập dữ liệu, thiết lập và thực hiện tìm kiếm toàn văn. Hãy tận dụng tính năng này để tối ưu hóa quy trình tìm kiếm trong ứng dụng của bạn!