У цьому керівництві я опишу створення повнотекстового пошуку в Laravel 4.
Ті з вас, хто працював з Laravel 3, можуть згадати, що в ньому була підтримка FULLTEXT-індекс. Ця функціональність була видалена з Laravel 4, але як і раніше може бути легко реалізована.
Однак майте на увазі, що повнотекстовий пошук сумісний ні з кожним сервером баз даних, або може працювати з ними по-різному. Це стало головною причиною його видалення з Laravel 4. Але якщо ви працюєте з MySQL, то ви можете використовувати такий пошук без проблем!
Що треба знати про повнотекстовому пошуку
MySQL підтримує повнотекстове індексування і пошук:
- Повнотекстовий індекс в MySQL - це індекс типу FULLTEXT.
- Повнотекстові індекси можуть використовуватися тільки з таблицями MyISAM. (А в MySQL 5.6 і вище вони також можуть використовуватися з таблицями InnoDB). Повнотекстові індекси можуть бути створені тільки для стовпців CHAR. VARCHAR або TEXT.
- Опис FULLTEXT-індекс може бути дано в операторі CREATE TABLE. коли таблиця створюється, або додано пізніше за допомогою ALTER TABLE або CREATE INDEX.
- Для великих наборів даних набагато швидше завантажити дані в таблицю, у якій немає FULLTEXT індексу, і після цього створити індекс, ніж завантажувати дані в таблицю, у якій вже є FULLTEXT індекс.
Як використовувати повнотекстовий пошук в Laravel
Для того щоб почати застосовувати повнотекстовий пошук в Laravel 4, ми подбаємо про кілька речей:
- Якщо ви використовуєте НЕ MySQL 5.6+, ми повинні вибрати в якості движка бази даних MyISAM замість InnoDB.
- Ми повинні налаштувати міграцію і додати повнотекстовий індекс.
- Ми повинні додати функцію пошуку в наш контролер.
Міграція нашої таблиці
У наведеному коді ви можете побачити, що ми також вибрали движок сховища MyISAM в міграції.
Індекс FULLTEXT заданий після створення таблиці за допомогою оператора ALTER TABLE.
У функції down () ми спочатку видаляємо повнотекстовий індекс, а потім видаляємо таблицю.
Додавання функції пошуку в наш контролер
Тепер, наприклад, якщо параметр вашого запиту буде «testing». ви отримаєте наступний MySQL-запит:
У цьому прикладі я також беру результат і передаю його в моє уявлення index. Ви так само можете використовувати інше уявлення.
Додавання маршруту і зміна уявлення
Ми створюємо наш маршрут так:
І ми можемо створити просту форму в поданні так:
Все, що нам для цього потрібно, це текстове поле з параметром name. з встановленим значенням query (або будь-який, який ви вирішили вибрати в якості вхідного імені в вашому контролері).
От і все!
Як ви вважаєте, чи корисний цей матеріал? Та ні
Статистика: Символів - 5 609/4 678 без пробілів (2 854/2 420 без коду). слів - 435