laravel-meilisearch maintained by codewiser
Laravel Meilisearch
Laravel helper for Meilisearch Scout driver.
Out-of-the-box, we should configure Meiliserach index settings in config/scout.php:
https://laravel.com/docs/10.x/scout#configuring-filterable-data-for-meilisearch
use App\Models\User;
use App\Models\Flight;
'meilisearch' => [
'host' => env('MEILISEARCH_HOST', 'http://localhost:7700'),
'key' => env('MEILISEARCH_KEY', null),
'index-settings' => [
User::class => [
'filterableAttributes'=> ['id', 'name', 'email'],
'sortableAttributes' => ['created_at'],
// Other settings fields...
],
Flight::class => [
'filterableAttributes'=> ['id', 'destination'],
'sortableAttributes' => ['updated_at'],
],
],
],
Using Attributes:
class User extends \Illuminate\Database\Eloquent\Model
{
use \Laravel\Scout\Searchable;
#[MeilisearchFilterableAttributes(['id', 'name', 'email'])]
#[MeilisearchSortableAttributes(['created_at'])]
public function toSearchableArray()
{
//
}
}
class Flight extends \Illuminate\Database\Eloquent\Model
{
use \Laravel\Scout\Searchable;
#[MeilisearchFilterableAttributes(['id', 'destination'])]
#[MeilisearchSortableAttributes(['updated_at'])]
public function toSearchableArray()
{
//
}
}
Just enumerate searchable classes in config/scout.php:
use App\Models\User;
use App\Models\Flight;
'meilisearch' => [
'host' => env('MEILISEARCH_HOST', 'http://localhost:7700'),
'key' => env('MEILISEARCH_KEY', null),
'searchable' => [User::class, Flight::class],
],
Console
Use scout:meilisearch-rebuild command to completely rebuild Meilisearch
index.