Всем привет! Я разрабатывал интересный сервис — mobicard.
У меня был интересный опыт внедрения поиска algolia по каталогу страниц. Нужно было построить поиск, который будет искать по модели юзера и генерировать поисковые индексы по определенным подготовленным запросам.
Примерно как это можно сделать на ларавель:
Шаг 1: Установка и настройка
- Установите библиотеку Algolia через Composer:
composer require algolia/scout-extended
- Зарегистрируйтесь на Algolia и создайте индекс для вашего типа данных.
- В файле
.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]