MySQL підтримує FULLTEXT індекси з версії 3.23, це дозволяє виробляти пошук по всьому тексту для стовпців з типами VARCHAR і TEXT за допомогою певного SQL виразу. Для початку нам потрібно створити цей самий FULLTEXT індекс. Приклад коду:
ALTER TABLE articles ADD FULLTEXT (title. Content);
Таким не складним виразом ми додали FULLTEXT індекс для полів title і content таблиці articles. Як бачите, FULLTEXT індекс можна додати для декількох стовпців відразу. Як же тепер виконати пошук? Дуже просто:
SELECT title. content FROM articles
WHERE MATCH (title. Content) AGAINST ( 'Пошук в MySQL');
Таким не складним виразом ми виберемо з таблиці articles поля title, content всіх записів, де MySQL знайде словосполучення «Пошук в MySQL» в шпальтах title, content. Пошук виконується без урахування регістру символів. Крім того, MySQL сортує результати в порядку убування релевантності. Як це відбувається і що це означає? MySQL створює значення релевантності у вигляді числа з плаваючою точкою в залежності від того, наскільки точне знайдено збіг, після чого сортує дані в порядку убування. При бажання, дане число можна отримати:
SELECT id. MATCH (title. Content)
AGAINST ( 'Отримуємо значення релевантності')
Як бачите для пошуку використовуються дві функції MATCH і AGAINST.
MATCH - функція служить для визначення стовпчика (ів) за якими буде проведений пошук. Список стовпців в MATCH обов'язково повинен бути визначений всередині індексу FULLTEXT.
AGAINST - функція виконує безпосередній пошук.
Ви можете використовувати булевий режим, для більш тонкого пошуку. Наприклад, виконаємо пошук всіх статей, в який зустрічається слово «булевий», але відсутнє слово «режим»:
SELECT title. content FROM articles
WHERE MATCH (title. Content)
AGAINST ( '+ булевий -режим' IN BOOLEAN MODE);
Як це працює? Якщо ви не вказуєте символи «+» або «-» то MySQL шукає будь-яке слово зі списку в кожному записі (аналогія з оператором OR). Якщо ви вказується символ «+», MySQL вибере записи в яких дане слово обов'язково присутній, (як оператор AND). Якщо ви вказуєте символ «-«, MySQL вибере записи, в який цього слова немає (як оператор NOT).
Як бачите, нічого складного. Задавайте свої відповіді. Так Так. Я допускаю багато помилок, але фраза «задавайте свої відповіді» просто інтернет мем. Уже багато Пічем отримав, як я дурний і пишу такі дурниці. Сперечатися не буду, але в даному випадку це не так.