Полнотекстовый поиск с MeiliSearch и Laravel Scout
MeiliSearch представляет собой простое и удобное решение для полнотекстового поиска. Его очень легко интегрировать в Laravel-приложение, используя драйвер для Laravel Scout.
Начнем с того, что Laravel Scout существует давно. Это прекрасный инструмент, который без особых проблем позволяет реализовывать полнотекстовый поиск для Eloquent-моделей. Как говорится, проверен временем. Во время запуска Scout может использовать драйвера сервиса Algolia (этот сервис обеспечивает полнотекстовый поиск посредством собственных серверов). Также существует возможность создавать свои драйвера. Вообще, как и множество других SaaS-предложений, Algolia дает возможность избавиться от лишней работы по разработке, позволяя быстро развернуть приложение.
Но бывают ситуации, когда просто нужен полнотекстовый поиск, причем простой как Algolia, но который можно было бы хостить у себя. Ну и чтобы не было таких сложностей как у того же Elasticsearch. Одно их решений — MeiliSearch.
Сейчас вы увидите, как легко настраивается локальный сервер поиска и подключается к Laravel. Для примера воспользуемся Laravel 8, а для поиска через MeiliSearch/Scout настроим модель App\Models\User.
Инсталляция
composer require laravel/scout
Публикация конфигурации Scout
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
Добавляем трейт Laravel\Scout\Searchable в модель
Инсталлируем драйвер MeiliSearch Laravel Scout
composer require meilisearch/meilisearch-laravel-scout
Публикуем конфигурацию MeiliSearch
php artisan vendor:publish --provider="Meilisearch\Scout\MeilisearchServiceProvider" --tag="config"
Обновляем .env
Если ключа нет, оставьте MEILISEARCH_KEY пустым.
Запускаем MeiliSearch
Тут надо следовать инструкциям из документации MeiliSearch.
Создаем поисковый индекс
Импортируем документы для заполнения индекса:
Выполняем поиск по модели
Послесловие
Документация MeiliSearch охватывает намного больше вариаций применения, чем мы описали. Если вы желаете использовать инструмент на полную катушку, рекомендуется с этой документацией ознакомиться.
По материалам https://tighten.co/blog/full-text-search-with-meilisearch-and-scout/.