Laravel 5.1 package for full-text search over Eloquent models based on Solarium

v0.1.0-alpha5 2015-10-27 20:05 UTC

This package is not auto-updated.

Last update: 2020-03-30 05:34:47 UTC


Latest Stable Version Latest Unstable Version License

Laravel 5.1 package for full-text search over Eloquent models based on Solarium, inspired by Laravel Lucene Search


Require this package in your composer.json and run composer update:

        "require": {
            "irto/solrio": "0.*"

After updating composer, add the ServiceProvider to the providers array in app/config/app.php

    'providers' => [

If you want to use the facade to search, add this to your facades in app/config/app.php:

    'aliases' => [
        'Search' => Irto\Solrio\Facade::class,


Publish the config file into your project by running:

    php artisan vendor:publish --provider="Irto\Solrio\ServiceProvider"

In published config file add descriptions for models which need to be indexed, for example:

    'index' => [
        'models' => [

            // ...

            namespace\FirstModel::class => [
                'fields' => [
                    'name', 'full_description', // Fields for indexing.

            namespace\SecondModel::class => [
                'fields' => [
                    'name', 'short_description', // Fields for indexing.

            // ...



###Artisan commands

####Build/Rebuild search index

For building of search index run:

    php artisan search:rebuild

####Clear search index

For clearing of search index run:

    php artisan search:clear

###Partial updating of search index

For register of necessary events (save/update/delete) use Irto\Solrio\Model\SearchTrait in target model:

    use Illuminate\Database\Eloquent\Model;

    use Irto\Solrio\Model\Searchable;
    use Irto\Solrio\Model\SearchTrait;

    class Dummy extends Model implements Searchable // use of Searchable is optional, without this will be always available to search
        use SearchTrait;

         * Is the model available for searching?
        public function isSearchable()
            return $this->publish;

You can also do it manually, how on a queued listener:

    use Illuminate\Queue\InteractsWithQueue;
    use Illuminate\Contracts\Queue\ShouldQueue;

    use Search; // if alias is configured

    class DummyUpdatedListener extends ShouldQueue
        use InteractsWithQueue;

        public function handle($event)
            $model = $event->getModel();

            Search::update($model); // you can use 'App::offsetGet('search')->update($model);' instead