friendsofcat / opensearch-scout-driver
OpenSearch 驱动程序,适用于 Laravel Scout
Requires
- php: ^7.4 || ^8.0
- friendsofcat/opensearch-adapter: ^2.1
Requires (Dev)
- friendsofcat/opensearch-migrations: ^2.0
- friendsofphp/php-cs-fixer: ^3.8
- laravel/legacy-factories: ^1.3
- laravel/scout: ^10.0
- orchestra/testbench: ^7.5
- phpstan/phpstan: ^1.6
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-19 20:10:12 UTC
README
OpenSearch 驱动程序,适用于 Laravel Scout。
内容
兼容性
OpenSearch Scout Driver 当前版本已与以下配置进行测试:
- PHP 7.4-8.2
- OpenSearch 2.x
- Laravel 7.x-10.x
- Laravel Scout 7.x-10.x
安装
该库可以通过 Composer 安装
composer require friendsofcat/opensearch-scout-driver
注意,此库只是 Laravel Scout 的驱动程序,请不要忘记在安装之前安装它
composer require laravel/scout
安装 Scout 后,使用以下命令发布其配置文件
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
然后,将 config/scout.php
文件中的 driver
选项更改为 opensearch
// config/scout.php 'driver' => env('SCOUT_DRIVER', 'opensearch'),
如果您想使用 OpenSearch Scout Driver 与 Lumen 框架,请参阅此指南。
配置
OpenSearch Scout Driver 使用 friendsofcat/opensearch-client 作为依赖项。要更改客户端设置,您需要首先发布配置文件
php artisan vendor:publish --provider="OpenSearch\Laravel\Client\ServiceProvider"
在新建的 config/opensearch.client.php
文件中,您可以使用配置散列定义默认连接名称。请参阅 opensearch-client 文档 获取更多详细信息。
OpenSearch Scout Driver 目前只有一个配置选项 - refresh_documents
。如果将其设置为 true
(默认为 false
),则文档将立即索引,这在测试中可能很有用。
您可以在发布后通过以下命令在 config/opensearch.scout_driver.php
文件中配置 refresh_documents
php artisan vendor:publish --provider="OpenSearch\ScoutDriver\ServiceProvider"
最后,请注意,使用 Scout 可以配置可搜索的数据、模型 ID 和索引名称。请参阅 官方 Scout 文档 获取更多详细信息。
请注意,
_id
字段不能是可搜索数据的部分,因此请确保在数据库使用 MongoDB 的情况下,该字段在toSearchableArray
方法中被排除或重命名。
基本用法
OpenSearch 驱动程序在内部使用 OpenSearch 查询字符串,包裹在 bool 查询 下。这意味着您可以在搜索模型时使用 迷你语言语法
$orders = App\Order::search('title:(Star OR Trek)')->get();
当省略查询字符串时,使用 match all 查询
$orders = App\Order::search()->where('user_id', 1)->get();
请参阅 官方 Laravel Scout 文档 获取更多详细信息和使用示例。
高级搜索
如果基本搜索无法满足您的项目需求,请检查OpenSearch Scout Driver Plus,它通过引入高级查询构建器扩展了标准Scout搜索功能。这些构建器允许您使用复合查询、自定义筛选和排序、高亮显示等功能。
迁移
如果您正在寻找一种程序化控制OpenSearch索引模式的方法,请检查OpenSearch Migrations。OpenSearch Migrations允许您修改应用程序的索引模式,并以与Laravel数据库迁移相同的轻松方式在多个环境中共享。
陷阱
有一些与其他Scout驱动程序略有不同之处
- 正如您可能知道的,Scout只索引由
toSearchableArray
方法返回的字段。OpenSearch驱动程序即使在toSearchableArray
返回空数组时也会索引模型。您可以通过覆盖模型中的shouldBeSearchable
方法来更改此行为
public function shouldBeSearchable() { return count($this->toSearchableArray()) > 0; }
- 原始搜索返回
SearchResult
类的实例(参见OpenSearch Adapter)
$searchResult = App\Order::search('Star Trek')->raw();
- 为了与其他驱动程序兼容并避免暴露引擎的内部实现,OpenSearch驱动程序忽略了
search
方法的回调参数
App\Order::search('Star Trek', function () { // this will not be triggered })->get()