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

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

  • 88

Как обеспечить полную актуальность индекса 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. Обработка очередей для быстродействия

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

SCOUT_QUEUE=true
Специальное предложение: бесплатный хостинг на полгода!
Введите промокод FREE6MONTH при регистрации и наслаждайтесь надежным хостингом бесплатно.

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

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');
}

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

Эксклюзивно для читателей: полгода бесплатного хостинга!
Заберите свой промокод FREE6MONTH и воспользуйтесь всеми преимуществами премиум-хостинга бесплатно.

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

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

Заключение

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

Хостинг, на который можно положиться!
Siteko.net

Устали от медленного хостинга или дорогих тарифов? Тогда вам к нам! Siteko.net — это быстрый и простой хостинг для тех, кто ценит удобство и стабильность.

  • Без падений и нервов — наш uptime почти всегда 100%.
  • Гибкие тарифы — только нужные функции, ничего лишнего.
  • Скорость— сайты грузятся, как пуля!
  • Удобно — разобраться сможет даже новичок, всё под рукой.
  • Поддержка всегда рядом 24/7 поможем решить любой вопрос.

Заходите на Siteko.net и попробуйте нас бесплатно первый месяц! Мы делаем всё, чтобы ваш сайт работал без проблем.

Siteko.net — просто, быстро и надёжно!