Laravel 9 Scout - How to add Full Text Search in Laravel 9?




Laravel 9 Scout - How to add Full Text Search in Laravel 9?

Hi friends,

In this tutorial,i will tell laravel 9 scout - how to add full text search in laravel 9?. i will show the example of laravel scout full text search. it can this example full explain scout full text search in laravel 9. you will learn laravel 9 scout elasticsearch example.

Let us know more about Laravel Scout, and it’s a powerful driver-based eloquent package that helps you develop super-fast fast-text search combining with your laravel models.

In this Laravel 9 Scout example, we will tell you how to process every ingredient to form the quick, responsive, and agile full-text search in laravel 9.

Here the following steps example laravel 9 full text search Using scout.

Step 1: Download Laravel

Let us begin the tutorial by installing a new laravel application. if you have already created the project, then skip following step.

composer create-project laravel/laravel example-app

Step 2: Install Scout

In this step we have to install scout package and we will publish them:

composer require laravel/scout

Next, we have to publish our configuration file. so you need to run bellow command:

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

Now we need to set configuration database as driver in your env file:



Step 3: Update User Model

Here, we already have users table created, so we need use "Searchable" and create toSearchableArray() method. so let's update following code:



namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;

use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Foundation\Auth\User as Authenticatable;

use Illuminate\Notifications\Notifiable;

use Laravel\Sanctum\HasApiTokens;

use Laravel\Scout\Searchable;

class User extends Authenticatable


use HasApiTokens, HasFactory, Notifiable, Searchable;


* The attributes that are mass assignable.


* @var string[]


protected $fillable = [






* The attributes that should be hidden for serialization.


* @var array


protected $hidden = [





* The attributes that should be cast.


* @var array


protected $casts = [

'email_verified_at' => 'datetime',



* Get the indexable data array for the model.


* @return array


public function toSearchableArray()


return [

'name' => $this->name,

'email' => $this->email




Next, we will create some dummy records on users table and import it.

so let's run following commands:

Add Dummy Records:

php artisan tinker


Import Records:

php artisan scout:import "App\Models\User"

Step 4: Add Controller

In this point, now we should create a new controller as UserController. In this controller, we will add index method, that will return users with filter.

Let's update following code to your controller file:



namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\User;

class UserController extends Controller



* Display a listing of the resource.


* @return \Illuminate\Http\Response


public function index(Request $request)



$users = User::search($request->search)->get();


$users = User::get()->take('5');


return view('users', compact('users'));



Step 5: Add Route

In this is step we need to create route for listing users. so open your "routes/web.php" file and add following route.



use Illuminate\Support\Facades\Route;

use App\Http\Controllers\UserController;



| Web Routes



| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the "web" middleware group. Now create something great!



Route::get('users', [UserController::class, 'index']);

Step 6: Add View

In Last step, let's create users.blade.php(resources/views/users.blade.php) for layout and we will write design code here and put following code:


<!DOCTYPE html>



<title>Laravel 9 Scout - How to add Full Text Search in Laravel 9? -</title>

<link href="" rel="stylesheet">



<div class="container">

<h3 class="mt-5 mb-5 text-center">Laravel 9 Scout - How to add Full Text Search in Laravel 9? -</h3>

<form method="GET" class="mb-5">

<div class="input-group mb-3">




value="{{ request()->get('search') }}"





<button class="btn btn-primary" type="submit" id="button-addon2">Search</button>



<table class="table table-bordered data-table">









@foreach($users as $user)


<td>{{ $user->id }}</td>

<td>{{ $user->name }}</td>

<td>{{ $user->email }}</td>








Run Laravel App:

All steps have been done, now you have to type the given command and hit enter to run the laravel app:

php artisan serve

Now, you have to open web browser, type the given URL and view the app output:



I hope it can help you...

#Laravel 9