hi019 / laravel-scout-typesense
Typesense laravel/scout 引擎
Requires
- php: >=7.4
- laravel/scout: ^8.0
- typesense/typesense-php: ^4.0
Requires (Dev)
- mockery/mockery: ^1.3
- phpunit/phpunit: ^8.0|^9.0
Suggests
- typesense/typesense-php: Required to use the Typesense php client.
This package is auto-updated.
Last update: 2021-07-06 20:33:05 UTC
README
这是 https://github.com/devloopsnet/laravel-scout-typesense-engine 的一个分支。
请使用 https://github.com/typesense/laravel-scout-typesense-engine!
此仓库现已弃用。其大部分功能已在上面链接的官方 Scout Typesense 引擎中实现。
Laravel Scout Typesense Engine
适用于 laravel/scout 的 Typesense 引擎 https://github.com/typesense/typesense。
此包可轻松将全文搜索功能添加到您的模型中,适用于 Laravel 5.3 到 7.0。内容
安装
您可以通过 composer 安装此包
添加服务提供者
// config/app.php 'providers' => [ // ... hi019\LaravelTypesense\TypesenseServiceProvider::class, ],
请确保您已将 Laravel Scout 作为提供者添加,否则您将得到一个 "无法解决的依赖" 错误
// config/app.php 'providers' => [ // ... Laravel\Scout\ScoutServiceProvider::class, ],
将 SCOUT_DRIVER=typesense
添加到您的 .env
文件中
然后您应该将 scout.php
配置文件发布到您的配置目录
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
在您的 config/scout.php
中添加
'typesense' => [ 'api_key' => 'abcd', 'nodes' => [ [ 'host' => 'localhost', 'port' => '8108', 'path' => '', 'protocol' => 'http', ], ], 'nearest_node' => [ 'host' => 'localhost', 'port' => '8108', 'path' => '', 'protocol' => 'http', ], 'connection_timeout_seconds' => 2, 'healthcheck_interval_seconds' => 30, 'num_retries' => 3, 'retry_interval_seconds' => 1, ],
使用
在安装了 scout 和 Typesense 驱动后,您需要将 Searchable
特性添加到您想要进行搜索的模型中。此外,通过在模型中定义 toSearchableArray
方法并实现 TypesenseModel
来定义您想要进行搜索的字段。
<?php namespace App; use Illuminate\Database\Eloquent\Model; use hi019\LaravelTypesense\Interfaces\TypesenseModel; use Laravel\Scout\Searchable; class Post extends Model implements TypesenseModel { use Searchable; /** * Get the indexable data array for the model. * * @return array */ public function toSearchableArray() { $array = $this->toArray(); // Customize array... return $array; } public function getCollectionSchema(): array { return [ 'name' => $this->searchableAs(), 'fields' => [ [ 'name' => 'title', 'type' => 'string', ], [ 'name' => 'created_at', 'type' => 'int32', ], ], 'default_sorting_field' => 'created_at', ]; } public function typesenseQueryBy(): array { return [ 'name', ]; } }
然后,像这样与搜索服务同步数据:
php artisan scout:import App\\Post
之后,您可以使用以下方式搜索模型:
Post::search(' Bugs Bunny')>get();
通过查询添加
searchable() 方法会分块查询结果并将记录添加到您的搜索索引中。
$post = Post::find(1);
// 您也可以通过集合添加记录... $post->searchable();
// OR
$posts = Post::where('year', '>', '2018')>get();
// 您也可以通过集合添加记录... $posts->searchable();
作者
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 以获取更多信息。