Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он поддерживает множество поисковых систем, включая MeiliSearch, поисковую систему с открытым исходным кодом, которую легко настроить и использовать.
В этой статье мы шаг за шагом проведем вас через процесс начала работы с Laravel Scout и MeiliSearch.
Сначала вам нужно установить Laravel Scout в ваше приложение Laravel. Вы можете установить Laravel Scout с помощью Composer:
composer require laravel/scout
После установки пакета необходимо опубликовать конфигурационный файл Scout, выполнив следующую команду:
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
Далее необходимо установить MeiliSearch, который является поисковой системой, которую Laravel Scout будет использовать для индексации и поиска наших данных. Чтобы установить MeiliSearch, вы можете выполнить следующую команду:
composer require meilisearch/meilisearch-laravel-scout
Опубликовать конфигурацию MeiliSearch
php artisan vendor:publish --provider="Meilisearch\Scout\MeilisearchServiceProvider" --tag="config"
После установки Laravel Scout и MeiliSearch необходимо настроить Scout на использование MeiliSearch. Откройте файл .env и добавьте следующую конфигурацию:
SCOUT_DRIVER=meilisearch MEILISEARCH_HOST=http://127.0.0.1:7700 MEILISEARCH_KEY=my_master_key
Переменная SCOUT_DRIVER указывает, что мы используем MeiliSearch в качестве бэкенда поисковой системы, а MEILISEARCH_HOST указывает URL нашего экземпляра MeiliSearch. Наконец, MEILISEARCH_KEY - это необязательный ключ API, который можно использовать для защиты доступа к экземпляру MeiliSearch.
Далее необходимо запустить сервер MeiliSearch, выполнив следующую команду:
./vendor/bin/meilisearch --master-key=my_master_key
Примечание:
Замените "my_master_key" на свой собственный мастер-ключ.
Часть команды "./vendor/bin/meilisearch" указывает расположение двоичного файла MeiliSearch относительно вашего текущего рабочего каталога. В зависимости от того, как вы установили MeiliSearch, расположение двоичного файла может быть другим.
Далее вам нужно создать модель с возможностью поиска в вашем приложении Laravel. Модель с возможностью поиска - это обычная модель Laravel, которая использует признак Laravel\Scout\Searchable и реализует метод toSearchableArray, чтобы указать, какие атрибуты должны быть доступны для поиска.
Например, давайте создадим модель User с возможностью поиска:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Laravel\Scout\Searchable; class User extends Authenticatable { use HasFactory, Searchable; /** * Get the indexable data array for the model. * * @return array */ public function toSearchableArray() { return [ 'id' => $this->id, 'name' => $this->name, 'email' => $this->email, ]; } }
В этом примере я добавил признак Searchable в модель User и реализовал метод toSearchableArray, чтобы указать, какие атрибуты должны быть доступны для поиска. Я включил атрибуты id, name и email в поисковый индекс.
Теперь, когда у вас есть модель с возможностью поиска, вы можете создать поисковый индекс в meiliSearch с помощью команды scout:index. Команда scout:index создает поисковый индекс для указанной модели в MeiliSearch и индексирует все записи из модели в поисковый индекс.
Чтобы создать поисковый индекс для модели пользователей, выполните в терминале следующую команду:
php artisan scout:index users
Это создаст поисковый индекс с именем users в вашем экземпляре MeiliSearch и проиндексирует все записи из таблицы users вашей базы данных в этот поисковый индекс.
Вы также можете импортировать всю вашу таблицу в meilisearch с помощью команды artisan:
php artisan scout:import "App\Models\User"
После создания поискового индекса вы можете начать поиск записей, используя метод поиска, предоставляемый Laravel Scout.
$results = User::search('search query')->get();
В результате будут получены все пользователи, соответствующие поисковому запросу.
Источники и вдохновение для этой статьи включают официальную документацию Laravel Scout (https://laravel.com/docs/8.x/scout ) и официальную документацию MeiliSearch ( https://docs.meilisearch.com/).
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.