Laravel Scout

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