Поиск нового уровня в 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/).

Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?

05.05.2023 14:00

Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.

Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом

05.05.2023 11:59

Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря своим методам, они делают код очень простым для понимания и читабельным.

JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы

05.05.2023 11:57

Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний, то, не теряя времени, практикуйте наш бесплатный онлайн тест 1100+ JavaScript MCQs и развивайте свои навыки и знания.

Массив зависимостей в React
Массив зависимостей в React

05.05.2023 09:44

Все о массиве Dependency и его связи с useEffect.

Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий

05.05.2023 09:26

Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут вам настроить, как будет выглядеть ваш сайт Temple, и вы можете настроить его дизайн в зависимости от ваших потребностей в дополнение к более чем 15+...