1.6 KiB
| title |
|---|
| TiDB Full-Text Search (SQL) |
TiDB Full-Text Search (SQL)
TiDB provides a full-text search feature that can replace MySQL-style keyword search use cases.
Availability gate (important)
Full-text search availability can depend on TiDB Cloud tier/region and TiDB version. Always confirm your deployment's capability before relying on it.
Create a full-text index
Create with table:
CREATE TABLE stock_items(
id INT,
title TEXT,
FULLTEXT INDEX (title) WITH PARSER MULTILINGUAL
);
Or add to an existing table:
ALTER TABLE stock_items
ADD FULLTEXT INDEX (title) WITH PARSER MULTILINGUAL
ADD_COLUMNAR_REPLICA_ON_DEMAND;
Parsers:
STANDARD: best for space/punctuation-delimited languages (often English)MULTILINGUAL: supports mixed languages (including CJK)
Note: ADD_COLUMNAR_REPLICA_ON_DEMAND is used in the official examples for enabling full-text search indexing. If your TiDB deployment rejects this clause, remove it and follow the deployment-specific guidance.
Query with ranking
Use FTS_MATCH_WORD(query, column) in both WHERE and ORDER BY:
SELECT *
FROM stock_items
WHERE FTS_MATCH_WORD('bluetooth earbuds', title)
ORDER BY FTS_MATCH_WORD('bluetooth earbuds', title) DESC
LIMIT 10;
Count matches:
SELECT COUNT(*)
FROM stock_items
WHERE FTS_MATCH_WORD('bluetooth earbuds', title);
Migration note (MySQL FULLTEXT)
Do not assume MySQL FULLTEXT behavior/availability carries over to TiDB in all deployments.
If the user says "use FULLTEXT", clarify whether they mean "MySQL FULLTEXT index" or "TiDB full-text search feature".