Поиск нового уровня в Laravel с помощью MeiliSearch и Scout

RedDeveloper
04.05.2023 11:33
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout

Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он поддерживает множество поисковых систем, включая MeiliSearch, поисковую систему с открытым исходным кодом, которую легко настроить и использовать.

В этой статье мы шаг за шагом проведем вас через процесс начала работы с Laravel Scout и MeiliSearch.

Шаг 1: Установите Laravel Scout

Сначала вам нужно установить Laravel Scout в ваше приложение Laravel. Вы можете установить Laravel Scout с помощью Composer:

composer require laravel/scout

После установки пакета необходимо опубликовать конфигурационный файл Scout, выполнив следующую команду:

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

Шаг 2: Установите MeiliSearch

Далее необходимо установить MeiliSearch, который является поисковой системой, которую Laravel Scout будет использовать для индексации и поиска наших данных. Чтобы установить MeiliSearch, вы можете выполнить следующую команду:

composer require meilisearch/meilisearch-laravel-scout

Опубликовать конфигурацию MeiliSearch

php artisan vendor:publish --provider="Meilisearch\Scout\MeilisearchServiceProvider" --tag="config"

Шаг 3: Настройте Laravel Scout

После установки 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, расположение двоичного файла может быть другим.

Шаг 4: Создание модели с возможностью поиска

Далее вам нужно создать модель с возможностью поиска в вашем приложении 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 в поисковый индекс.

Шаг 5: Создание поискового индекса

Теперь, когда у вас есть модель с возможностью поиска, вы можете создать поисковый индекс в meiliSearch с помощью команды scout:index. Команда scout:index создает поисковый индекс для указанной модели в MeiliSearch и индексирует все записи из модели в поисковый индекс.

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

php artisan scout:index users

Это создаст поисковый индекс с именем users в вашем экземпляре MeiliSearch и проиндексирует все записи из таблицы users вашей базы данных в этот поисковый индекс.

Вы также можете импортировать всю вашу таблицу в meilisearch с помощью команды artisan:

php artisan scout:import "App\Models\User"

Шаг 6: Поиск в индексе

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

$results = User::search('search query')->get();

В результате будут получены все пользователи, соответствующие поисковому запросу.

Источники и вдохновение для этой статьи включают официальную документацию Laravel Scout (https://laravel.com/docs/8.x/scout ) и официальную документацию MeiliSearch ( https://docs.meilisearch.com/).

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.