larva / laravel-scout-sphinxsearch
Laravel Scout Sphinx Driver
Requires
- foolz/sphinxql-query-builder: ^2.0
- illuminate/database: ^5.8 || ^6.0 || ^7.0 || ^8.0
- illuminate/support: ^5.8 || ^6.0 || ^7.0 || ^8.0
- laravel/scout: ^6.0 || ^7.0 || ^8.0
This package is auto-updated.
Last update: 2024-10-29 05:41:19 UTC
README
Installation
Composer
Use the following command to install package via composer
composer require larva/laravel-scout-sphinxsearch
Configuration
Publish the Scout configuration using the vendor:publish
Artisan command.
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
This command will publish the scout.php configuration file to your config directory. Edit this file to set 'sphinxsearch' as a Scout driver:
'driver' => env('SCOUT_DRIVER', 'sphinxsearch'),
And add default Sphinx connection options
'sphinxsearch' => [ 'host' => env('SPHINX_HOST', 'localhost'), 'port' => env('SPHINX_PORT', '9306'), 'socket' => env('SPHINX_SOCKET'), 'charset' => env('SPHINX_CHARSET'), ],
Override these variables in your .env file if need.
Usage
- Add the
Laravel\Scout\Searchable
trait to the model you would like to make searchable. - Customize index name and searchable data for the model:
public function searchableAs() { return 'posts_index'; } public function toSearchableArray() { $array = $this->toArray(); // Customize array... return $array; }
The basic search:
$orders = App\Order::search('Star Trek')->get();
Please refer to the Scout documentation for additional information. You can run more complex queries on index using callback, set the where clause, orderBy or paginate, for example:
$oorders = App\Order::search($keyword, function (SphinxQL $query) { return $query->groupBy('description'); }) ->where('status', 1) ->orderBy('date', 'DESC') ->paginate(20);
Note: Changes on Sphinx indexes are only allowed for RT (Real Time) indexes. If you have ones and you need to update/delete records please define
public $isRT = true;
model's property.