Skip to content

Naph/searchlight

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Searchlight

An Elasticsearch search query language for Laravel featuring multi-model search

public function search(Search $search, Comment $comments, Post $posts)
{
    return $search->in($comments, $posts)
        ->match('Searchlight')
        ->get();
}

and built-in qualifier reducers.

$driver->qualifier('/#(\w+)/', function (Search $search, $fragment) {
    $search->filter(['tags' => $fragment]);
});

Install

Using composer

composer require naph/searchlight

Register the service provider

Naph\Searchlight\SearchlightServiceProvider;

Publish vendor files containing driver and host configuration. Lumen users should copy the file instead.

php artisan vendor:publish --tag searchlight

Setup models by implementing the contract/trait pair and overriding getSearchableFields. The trait binds events to saved and deleted so indices are kept in sync with your database.

use Illuminate\Database\Eloquent\Model;
use Naph\Searchlight\Model\SearchlightContract;
use Naph\Searchlight\Model\SearchlightTrait;

class Topic extends Model implements SearchlightContract
{
    use SearchlightTrait;

    public function getSearchableFields(): array
    {
        return [
            'title' => 1,
            'description' => 0.5,
            'content' => 0.1
        ];
    }
}

Storing this model's fully qualified classname in searchlight.repositories config ensures their indices are built when running:

php artisan searchlight:rebuild

This command destroys all existing indexed documents in the process.

Requirements

Currently only supports PHP7 and latest versions of Laravel and Lumen.

License

Searchlight is an open-sourced software licensed under the MIT license.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages