Ой, ничего не найдено!

К сожалению, по вашему запросу пока ничего нет (но это только пока!), зато вы можете подписаться на нашу замечательную email-рассылку, чтобы не пропустить самое интересное в будущем.

  • 206

Как обеспечить полную актуальность индекса Meilisearch на Laravel сайте

  • 2 минуты на чтение

При использовании Meilisearch для поиска на Laravel сайте одна из главных задач разработчика — обеспечить полную актуальность и своевременное обновление поискового индекса. В этой статье мы разберём, как этого добиться наиболее эффективным и простым способом.

1. Подключение Laravel Scout и Meilisearch

Сначала убедитесь, что ваш проект использует Laravel Scout и Meilisearch. Установите пакеты через Composer:

composer require laravel/scout composer require meilisearch/meilisearch-php

Затем настройте драйвер в .env:

SCOUT_DRIVER=meilisearch MEILISEARCH_HOST=http://127.0.0.1:7700 MEILISEARCH_KEY=masterKey

2. Подключение трейта Searchable к моделям

Для каждой модели, которая должна быть проиндексирована в Meilisearch, подключите трейт:

use Laravel\Scout\Searchable; class Product extends Model { use Searchable; // Указываем данные, которые должны попасть в индекс public function toSearchableArray() { return [ 'id' => $this->id, 'title' => $this->title, 'description' => $this->description, ]; } }

Теперь при каждом создании, обновлении или удалении записи Laravel Scout автоматически будет обновлять индекс.

3. Обработка очередей для быстродействия

Чтобы не замедлять работу сайта, используйте очереди для обновления индекса:

Подключение за минуту
Попробуйте Siteko.net бесплатно в течение месяца
Проверьте хостинг на реальном сайте: скорость, стабильность и поддержка доступны сразу после подключения.
Начать бесплатно
SCOUT_QUEUE=true

Не забудьте запустить обработчик очередей:

php artisan queue:work

Это перенесёт индексацию в фоновый режим и не замедлит отклик вашего сайта.

4. Случаи, когда Scout не срабатывает автоматически

Scout автоматически обновляет индекс только при работе через модель Eloquent (методы save(), create(), delete()). Однако в случае прямых запросов к базе (DB::table()->update() или DB::table()->delete()) Scout не заметит изменений.

В таких случаях необходимо вручную обновлять индекс:

// обновление индекса после массового изменения Product::where('updated_at', '>=', now()->subMinutes(10))->searchable(); // полная синхронизация php artisan scout:flush "App\Models\Product" php artisan scout:import "App\Models\Product"

5. Полная переиндексация по расписанию

Рекомендуется настроить ежедневную (например, ночную) переиндексацию, чтобы гарантировать абсолютную точность данных в индексе:

// app/Console/Kernel.php protected function schedule(Schedule $schedule) { $schedule->command('scout:import "App\Models\Product"')->dailyAt('02:00'); }

Это полезно, если есть вероятность некорректных изменений напрямую в БД.

1 месяц бесплатно
Запустите сайт на Siteko.net без стартовых затрат
Быстрый хостинг, понятная панель и поддержка рядом с первого дня. Тестовый месяц доступен сразу после выбора тарифа.
Выбрать хостинг

6. Проверка и мониторинг

Периодически проверяйте состояние индекса, особенно после важных изменений на сайте. Это можно сделать вручную или с помощью автоматизированных тестов, которые проверяют актуальность данных, отправляя тестовые поисковые запросы.

Заключение

Следуя этим рекомендациям, вы сможете легко поддерживать полный порядок и актуальность поискового индекса Meilisearch на своём Laravel сайте. Используйте очереди, регулярно выполняйте переиндексацию и избегайте прямых изменений данных в БД без обновления индекса, и ваш поиск всегда будет работать быстро и точно.

Первый месяц бесплатно

Хостинг Siteko.net для стабильного запуска сайта

Разместите проект на Siteko.net и проверьте скорость, панель управления и поддержку без стартовой оплаты.

  • 1 месяц бесплатно для новых клиентов сразу после выбора тарифа.
  • Быстрый старт для лендинга, блога или корпоративного сайта.
  • Поддержка рядом поможет с переносом и настройкой проекта.
Выбрать тариф