Laravel Scout
Cài đặt gói scout với lệnh :
composer require laravel/scout
public file config scout với lệnh
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
Mình sử dụng algolia từ https://www.algolia.com/ làm dịch vụ search
Mình sử dụng queue để sử dụng ở file config/scout.php
SCOUT_QUEUE=true
Ví dụ ở đây mình sử dụng Searchable Trait ở trong model Post
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Laravel\Scout\Searchable; class Post extends Model { /** @use HasFactory<\Database\Factories\PostFactory> */ use HasFactory,Searchable; public function searchableAs(): string { return 'posts_index'; } public function toSearchableArray() { return [ 'id'=>(int) $this->id, 'title'=> $this->title, ]; } }
Ở đây dùng searchableAs để đổi tên index , toSearchableArray để chọn các trường có thể tìm kiếm
Cách sử dụng ở đây rất đơn giản với lệnh :
public function search()
{
$data = Post::search('Hiến')->paginate(20);
dd($data);
}
Ta cũng có thể bật tính năng đồng bộ với lệnh :
public function dongbo(){
Post::makeAllSearchable();
/* $post = Post::find(1);
$post->searchable(); // Thêm vào chỉ mục tìm kiếm
$post->unsearchable(); // Xóa khỏi chỉ mục tìm kiếm */
}
Ở đây mình đã bật chế độ queue=true nên cần set up lệnh chqạy
php artisan queue:work
Thế là xong .Thanks you các bạn đã quan tâm