pgsql-17 全文搜索
目录
17 - 全文搜索
1. 📖 概述
PostgreSQL内置强大的全文搜索功能,支持中英文搜索、相关性排名等。
2. 🔍 基础概念
2.1 tsvector和tsquery
-- 创建全文搜索列
ALTER TABLE articles ADD COLUMN search_vector tsvector;
-- 更新搜索向量
UPDATE articles SET search_vector =
to_tsvector('english', title || ' ' || content);
-- 创建GIN索引
CREATE INDEX idx_articles_search ON articles USING GIN(search_vector);
-- 搜索
SELECT * FROM articles
WHERE search_vector @@ to_tsquery('english', 'postgresql & database');
-- 相关性排序
SELECT title, ts_rank(search_vector, query) AS rank
FROM articles, to_tsquery('english', 'postgresql') query
WHERE search_vector @@ query
ORDER BY rank DESC;
3. 🌏 中文全文搜索
-- 安装zhparser分词器
CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION chinese (PARSER = zhparser);
-- 使用中文搜索
SELECT * FROM articles
WHERE to_tsvector('chinese', title) @@ to_tsquery('chinese', '数据库');
4. 📚 下一步
学习数组与范围类型
xingliuhua