Skip to content
This repository has been archived by the owner on Jun 26, 2023. It is now read-only.

Irto/solrio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

solrio

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

Installation

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' => [
        Irto\Solrio\ServiceProvider::class,
    ],

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,
    ],

##Configuration

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.
                ]
            ],

            // ...

        ],
    ],

##Usage

###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
        }
    }

About

Laravel package for Solarium

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages