naph / searchlight
适用于 Laravel 5.4+ 的搜索查询语言,支持 Eloquent 和 Elasticsearch
0.6.0
2017-08-24 01:30 UTC
Requires
- php: ^7.0
- elasticsearch/elasticsearch: ^5.2
- illuminate/bus: ^5.4
- illuminate/database: ^5.4
- illuminate/http: ^5.4
- illuminate/queue: ^5.4
- illuminate/support: ^5.4
Requires (Dev)
- phpunit/phpunit: ^5.6
README
适用于 Laravel 的 Elasticsearch 搜索查询语言,具有多模型搜索功能
public function search(Search $search, Comment $comments, Post $posts) { return $search->in($comments, $posts) ->match('Searchlight') ->get(); }
和内置的限定符减少器。
$driver->qualifier('/#(\w+)/', function (Search $search, $fragment) { $search->filter(['tags' => $fragment]); });
安装
使用 composer
composer require naph/searchlight
注册服务提供者
Naph\Searchlight\SearchlightServiceProvider;
发布包含驱动程序和主机配置的供应商文件。Lumen 用户应复制文件。
php artisan vendor:publish --tag searchlight
通过实现合同/特性对并重写 getSearchableFields
来设置模型。特性将事件绑定到保存和删除,以确保索引与数据库同步。
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 ]; } }
将此模型的完全限定类名存储在 searchlight.repositories
配置中,确保在运行时构建它们的索引
php artisan searchlight:rebuild
此命令将在过程中销毁所有现有的索引文档。
要求
目前仅支持 PHP7 和 Laravel 及 Lumen 的最新版本。
许可证
Searchlight 是一个开源软件,受 MIT 许可证 许可。