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