Проблемът с търсенето от типа '%keyword%' е, че няма начин за ефективно търсене по него в обикновена таблица, дори ако създадете индекс на тази колона. Помислете как бихте изглеждали този низ в телефонния указател. Всъщност няма начин да го оптимизирате - трябва да сканирате целия телефонен указател - и това прави MySQL, сканиране на пълна таблица.
Ако промените това търсене на „ключова дума%“ и използвате индекс, можете да получите много бързо търсене. Все пак изглежда, че това не е това, което искате.
Имайки това предвид, използвах индексиране/търсене в пълен текст доста често и ето няколко предимства и недостатъци:
Плюсове
- Много бързо
- Връща резултати, сортирани по уместност (по подразбиране, въпреки че можете да използвате всяко сортиране)
- Могат да се използват стоп думи.
Против
- Работи само с MyISAM таблици
- Думите, които са твърде кратки, се игнорират (минимумът по подразбиране е 4 букви)
- Изисква различен SQL в клаузата where, така че ще трябва да промените съществуващите заявки.
- Не съвпада с частични низове (например „дума“ не съвпада с „ключова дума“, а само с „дума“)
Ето добра документация за търсене в пълен текст .
Друг вариант е да използвате система за търсене като Sphinx . Може да бъде изключително бърз и гъвкав. Оптимизиран е за търсене и се интегрира добре с MySQL.