Опыт использование поиска algolia в laravel

Всем привет! Я разрабатывал интересный сервис — mobicard.

У меня был интересный опыт внедрения поиска algolia по каталогу страниц. Нужно было построить поиск, который будет искать по модели юзера и генерировать поисковые индексы по определенным подготовленным запросам.

Примерно как это можно сделать на ларавель:

Шаг 1: Установка и настройка

  1. Установите библиотеку Algolia через Composer:
composer require algolia/scout-extended
  1. Зарегистрируйтесь на Algolia и создайте индекс для вашего типа данных.
  2. В файле .env, добавьте следующие переменные окружения, которые вы найдете на странице вашего индекса в Algolia:
ALGOLIA_APP_ID=your_app_id 
ALGOLIA_SECRET=your_secret_key 

Шаг 2: Добавление поиска в модель

Добавим трейт и метод в нужную нам модель (в моем случае — Users):

use Laravel\Scout\Searchable;


class User [...]
{
    use Searchable;

    public function toSearchableArray()
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            [...]
        ];
    }

    public function shouldBeSearchable()
    {
        return $this->is_active;
    }

Трейт позволяет экспортировать модель в algolia при сохранении модели, метод toSearchableArray отвечает за свойства, которые мы будем передавать на сторону algolia , shouldBeSearchable — будем ли мы добавлять модель в индекс.

Шаг 3: Реализация поиска

Ну и для примера покажу, как у меня реализован поиск по фразе $search в контроллере:

User::search($search->search_text)

->get()

Очень простая конструкция позволяет сделать быстрый и качественный поиск по сайту. Дальше мы работаем с результатами как с обычными моделями.
Click to rate this post!
[Total: 0 Average: 0]

Вам также может понравиться

About the Author: deniskoronets

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *