This package is abandoned and no longer maintained. The author suggests using the package instead.

Laravel Scout custom engine for MeiliSearch

v1.0.0 2020-04-16 14:47 UTC

This package is auto-updated.

Last update: 2020-04-18 18:18:54 UTC



The Laravel scout package for MeiliSearch.

MeiliSearch provides an ultra relevant and instant full-text search. Our solution is open-source and you can check out our repository here.

Here is the MeiliSearch documentation 📖

Table of Contents



$ composer require meilisearch/meilisearch-laravel-scout

Export configuration

$ php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
$ php artisan vendor:publish --provider="Meilisearch\Scout\MeilisearchServiceProvider" --tag="config"

Update .env


Run MeiliSearch

There are many easy ways to download and run a MeiliSearch instance.

For example, if you use Docker:

$ docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest ./meilisearch --master-key=masterKey

NB: you can also download MeiliSearch from Homebrew or APT.

Getting started


Create an index

// Create an index
$ php artisan scout:index books
// Create an index and give the primary-key
$ php artisan scout:index books --key book_id

Add document


use Laravel\Scout\Searchable;

class Book extends Model
    use Searchable;

class BookController extends Controller
    public function store()
        $book = new Book();
        $book->title = 'Pride and Prejudice';

You can also import all your table to meilisearch by using the artisan command:

$ php artisan scout:import "App\Book"

Search in index

class BookController extends Controller
    public function search()
        // MeiliSearch is typo-tolerant:
        Book::search('harry pottre')->get();
        // Or if you want to get the result from meilisearch:
        Book::search('harry pottre')->raw();

Delete documents

class BookController extends Controller
    public function destroy($id)
        // Delete one document
        // Delete several documents
        Book::destroy([1, 42]);  
        // Delete all documents /!\

or you can use the artisan command to delete all documents from an index:

$ php artisan scout:flush "App\Book"

Delete an index

$ php artisan scout:index -d books


Custom search

All the supported options are described in this documentation section.

class BookController extends Controller
    public function customSearch()
        Book::search('prince', function (Index $meilisearch, $query, $options) {
            $options['filters'] = 'author="Antoine de Saint-Exupéry"';
            return $meilisearch->search($query, $options);


class BookController extends Controller
    public function search()
        // with a limit of items per page:
        // using meilisearch response:

Compatibility with MeiliSearch

This package works for MeiliSearch >=v0.10.

Additional notes

You can use more advance function by reading the documentation of MeiliSearch PHP Client

This package is a custom engine of Laravel Scout