MySQL
MySQL
ALTER TABLE articles ADD FULLTEXT INDEX ft_title_content (title, content);
SELECT id, title
FROM articles
WHERE MATCH(title, content) AGAINST('+mysql -oracle' IN BOOLEAN MODE);PostgreSQL
PostgreSQL
ALTER TABLE articles ADD COLUMN tsv tsvector
GENERATED ALWAYS AS (to_tsvector('simple', title || ' ' || content)) STORED;
CREATE INDEX idx_articles_tsv ON articles USING GIN (tsv);
SELECT id, title FROM articles
WHERE tsv @@ plainto_tsquery('simple', 'mysql');| 分词 | MySQL 默认按空格分词,中文可配 ngram 解析器;PG 用文本搜索配置(simple/english 等) |
|---|---|
| 最小词长 | MySQL InnoDB 默认 innodb_ft_min_token_size=3,短词不入索引 |
| 命中模式 | 布尔模式支持 +/- 操作符;自然语言模式按相关度排序 |