z tego co piszesz FULL-TEXT jest bedzie właściwym rozwiazaniem, byl optimizowany własnie dla duuuuużych tabel z mnóstwem informacji.
Za ograniczeń to
1. typ tabel to MyISAM, FULL-TEXT nie działa na InnoDB.
trzeba też dobrze zrozumieć jak jest ustalana "waga" słow ktorych szukamy
ja to nazywam "odwrotną logiką" tzn:
im wiecej razy szukana fraza pojawi sie we wpisie tym mniejszą "wagę" ma wpis, najbardziej trafne sa wpisy gdzie fraza pojawia sie najmniej razy, ale przynajmniej raz.
indexy pełno textowe tworzy sie tak:
ALTER TABLE `bazadanych`.`tabela` ADD FULLTEXT `Index`(`pole_text`);
najlepiej po dodaniu wszyskich wpisów, a nie przy tworzeniu tabeli.
potem kwerendy:
SELECT *
FROM `bazadanych`.`tabela` WHERE MATCH (`tabela`.`pole_text`) AGAINST ('szukane fraza');
takie zapytanie odrazu sortuje wpisy zależnie od "wagi"
lub
SELECT *, MATCH `tabela`.`pole_text` AGAINST ('szukane fraza') AS trafnosc
FROM `bazadanych`.`tabela`;
jesli chcemy pokazać jak trafne sa resultaty
odsylam tez do dokumentacji MySQL