Căutarea clasică prin LIKE '%termen%' este extrem de lentă pe tabele mari, deoarece caracterul wildcard la început (%) forțează un Full Table Scan (citirea fiecărui rând de pe disc, ignorând orice index B-Tree).
Motorul de Căutare Full-Text din MySQL folosește un index inversat (Inverted Index) peste tabelele InnoDB, permițând căutări instantanee în milioane de documente text, articole de blog sau descrieri de produse, cu suport pentru operatori booleeni și scoruri de relevanță.
Crearea indexului și căutare avansată în BOOLEAN MODE
-- 1. Adăugarea unui index FULLTEXT pe coloanele de căutare
ALTER TABLE articole ADD FULLTEXT INDEX idx_ft_cautare (titlu, continut);
-- 2. Căutare avansată cu operatori booleeni (+, -, *)
SELECT id, titlu,
MATCH(titlu, continut) AGAINST('+mysql +optimizare -vechi' IN BOOLEAN MODE) AS relevanta
FROM articole
WHERE MATCH(titlu, continut) AGAINST('+mysql +optimizare -vechi' IN BOOLEAN MODE)
ORDER BY relevanta DESC;
Semnificația Operatorilor în BOOLEAN MODE
| Operator | Semnificație | Exemplu |
|---|---|---|
+ |
Cuvântul trebuie obligatoriu să fie prezent în text. | +mysql |
- |
Cuvântul trebuie exclus complet (elimină rezultatul). | -oracle |
* |
Wildcard la sfârșit de cuvânt (prefix matching). | program* (găsește program, programare, programator) |
"..." |
Căutare după expresia exactă (potrivire fidelă de frază). | "baze de date relationale" |
> < |
Crește sau scade relevanța cuvântului fără a-l face obligatoriu. | +php >laravel <wordpress |