https://github.com/outl1ne/laravel-scout-batch-searchable
This Laravel package allows for batching of Scout updates.
https://github.com/outl1ne/laravel-scout-batch-searchable
Last synced: about 2 months ago
JSON representation
This Laravel package allows for batching of Scout updates.
- Host: GitHub
- URL: https://github.com/outl1ne/laravel-scout-batch-searchable
- Owner: outl1ne
- License: mit
- Created: 2021-09-13T12:36:53.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-01-26T15:22:49.000Z (over 1 year ago)
- Last Synced: 2025-03-24T06:04:49.495Z (2 months ago)
- Language: PHP
- Size: 35.2 KB
- Stars: 29
- Watchers: 1
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Laravel Scout Batch Searchable
[](https://packagist.org/packages/outl1ne/laravel-scout-batch-searchable)
[](https://packagist.org/packages/outl1ne/laravel-scout-batch-searchable)This [Laravel](https://laravel.com) package allows for batching of Scout updates.
## Requirements
- Laravel Scout 9+
- Scheduler with cron## Description
This package provides a new trait `BatchSearchable` that should be used instead of the regular `Searchable` trait provided by Laravel Scout.
Using that trait, all updates pushed through Scout to the search server (whether it be MeiliSearch, Algolia or whatever else), are batched together instead of being sent one-by-one.
The updates are sent on two possible conditions:
> Either `scout.batch_searchable_max_batch_size` (default 250) is exeeded
or
> `scout.batch_searchable_debounce_time_in_min` (default 1) minutes have passed from the last update to the pending queue
The IDs of models that require updating are stored in the default cache layer using the `Cache` helper.
The debounce check uses Laravel's Scheduler to schedule a job that checks through all the pending update queues and sees if the required time has passed. This requires that the system has a working cron setup that calls `schedule:run` every minute.
## Installation
Install the package in a Laravel Nova project via Composer and run migrations:
```bash
composer require outl1ne/laravel-scout-batch-searchable
```## Usage
Where you previously used the Searchable trait, just use BatchSearchable instead:
```php
use Outl1ne\ScoutBatchSearchable\BatchSearchable;class SomeModel extends Model {
use BatchSearchable;
}
```## Credits
- [Tarvo Reinpalu](https://github.com/tarpsvo)
## License
Laravel Scout Batch Searchable is open-sourced software licensed under the [MIT license](LICENSE.md).