Laravel Scout предоставляет простой и мощный API для полнотекстового поиска в вашем Laravel-приложении. Он интегрируется с популярными поисковыми движками, такими как Algolia и MeiliSearch, а также предлагает драйвер для локального поиска. В этом руководстве мы рассмотрим, как настроить и использовать Laravel Scout для реализации полнотекстового поиска.
1. Установка Laravel Scout
Для начала убедитесь, что у вас установлен Laravel и Composer. Создайте новый проект Laravel, если у вас его еще нет:
composer create-project --prefer-dist laravel/laravel scout-example
Перейдите в директорию проекта:
cd scout-example
Установите Laravel Scout через Composer:
composer require laravel/scout
2. Настройка модели
Чтобы использовать Laravel Scout, ваша модель должна использовать трейт Searchable
. Например, если у вас есть модель Post
, добавьте трейт Searchable
:
<?php
namespace App\Models;
use Laravel\Scout\Searchable;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use Searchable;
}
3. Настройка индексации
Laravel Scout автоматически индексирует ваши модели при сохранении, обновлении или удалении. Однако, для полной индексации ваших моделей, вы можете использовать команду scout:import
:
php artisan scout:import "App\Models\Post"
4. Поиск моделей
Чтобы выполнить поиск, используйте метод search
на вашей модели:
$posts = App\Models\Post::search('query')->get();
5. Настройка поискового движка
Laravel Scout поддерживает несколько поисковых движков. Вы можете выбрать движок, установив соответствующий пакет через Composer и настроив его в файле .env
.
Algolia
Установите пакет Algolia:
composer require algolia/algoliasearch-client-php
Настройте Algolia в .env
:
SCOUT_DRIVER=algolia
ALGOLIA_APP_ID=your_app_id
ALGOLIA_SECRET=your_secret
MeiliSearch
Установите пакет MeiliSearch:
composer require meilisearch/meilisearch-php
Настройте MeiliSearch в .env
:
SCOUT_DRIVER=meilisearch
MEILISEARCH_HOST=http://127.0.0.1:7700
MEILISEARCH_KEY=your_key
6. Настройка поискового индекса
Вы можете настроить поисковый индекс для вашей модели, определив метод toSearchableArray
в модели:
public function toSearchableArray()
{
$array = $this->toArray();
// Customize the data array...
return $array;
}
7. Поиск с пагинацией
Laravel Scout поддерживает пагинацию результатов поиска:
$posts = App\Models\Post::search('query')->paginate(10);
8. Поиск с фильтрацией
Вы можете фильтровать результаты поиска, используя метод where
:
$posts = App\Models\Post::search('query')
->where('category', 'news')
->get();
Заключение
Laravel Scout предоставляет простой и мощный способ реализации полнотекстового поиска в вашем Laravel-приложении. Он интегрируется с популярными поисковыми движками и предлагает гибкий API для выполнения поисковых запросов. Изучение и использование Laravel Scout может значительно улучшить пользовательский опыт вашего приложения, предоставляя быстрый и точный поиск.
0 комментариев