Scout / Eloquent + Rust + Go

给 Eloquent接上全文搜索

九个引擎、六种框架加原生 PHP,共用一套查询与索引 API。

探探,scout 的项目宠物

一套 API,换引擎不改业务代码

Searchable trait 把模型、观察者与查询构建器串起来,搜索请求最终交给统一的 Engine 契约。

配置根能从 Webman 插件路径、SCOUT_CONFIG_KEY、Yii params 或 Scout::configure() 解析,同一份代码跑在六种框架与原生 PHP 上。

  • Scout 兼容的查询构建器
  • 九个引擎同一契约
  • 索引同步可队列可降级
9搜索引擎
6框架适配
v2.2.0当前版本
探探 的 微笑 表情

探探

探探,一只拿着放大镜的侦察犬,嗅出文档、建立索引,再按需把它们找回来。

嗅一嗅,文档就排好队了。

搜索、索引与引擎各就各位

模型、构建器与引擎之间只有一层契约。

Scout 风格 API

search、where、orderBy、paginate,迁移主要换一个 trait。

九个搜索引擎

OpenSearch、Elasticsearch、Meilisearch 等九种引擎。

高级查询

时间范围、地理距离、全文检索、KNN 向量排序与分面聚合。

索引自动同步

saved、deleted、restored 事件触发写入,支持软删除文档。

队列化索引

Webman Redis Queue 可用时异步,缺失时记录日志并降级同步。

六框架接入

Webman、Laravel、Hyperf、ThinkPHP、Yii2、Yii3 与原生 PHP。

同一能力,Rust 与 Go 版本

PHP 版本之外,同一套搜索能力也有 Rust 与 Go 实现。

Rust v0.9.0 Rust 2021 / 8 后端

rust-scout

Rust 版全文搜索抽象

用 Engine trait 统一八种搜索后端,默认内存驱动零依赖,切换引擎不改业务代码。

  • 八种搜索后端
  • 链式查询构建
  • 索引生命周期
查看 Rust 仓库
Go v1.4.0 Go 1.24 / 标准库

go-scout

Go 版 Scout 搜索同步

把模型保存、删除、恢复与搜索引擎自动同步,内置九种引擎与十六个驱动名。

  • 九种搜索引擎
  • 进程内异步队列
  • 十六个驱动名
查看 Go 仓库

从引擎到多框架落地

版本记录来自真实提交与发布。

v2.2.0

Laravel 13 适配

支持 Laravel 13 与 symfony/console 8,依赖解析跟上新框架栈。

v2.1.6

console 8 兼容修复

修复 symfony/console 8.x 下的安装失败与致命错误。

v2.1.0

原生 PHP 与审查修复

新增原生 PHP 配置入口与项目宠物,集中修复一轮审查问题。

v2.0.0

多框架支持

新增多框架接入支持,并补齐对应文档。

版本日志

最近的发布记录,完整列表在 GitHub Releases。

最新 v2.2.0 全部版本
v2.2.02026-09-29

支持 Laravel 13 与 symfony/console 8。

v2.1.62026-09-29

兼容 symfony/console 8.x,修复安装失败与致命错误。

v2.1.52026-09-26

修正中文 README 中审查报告的相对路径。

v2.1.42026-09-26

文档全量对齐:审查报告、设计图标签与 README 交叉引用。

v2.1.32026-09-26

CI 调整:PHPStan 只在最新 PHP 栈上运行。

v2.1.22026-09-26

CI 转绿:PHPStan 基线、可选依赖符号桩与 base_path 兼容。

安装与使用

先安装,再跑一个最小示例。

PHP >= 8.0 / Eloquent 模型完整 README
安装
composer require erikwang2013/webman-scout
最小示例
use Erikwang2013\WebmanScout\Searchable;
use support\Model;

class Product extends Model
{
    use Searchable;

    public function searchableAs(): string
    {
        return 'products';
    }
}

$products = Product::search('phone')
    ->where('status', 1)
    ->paginate(15);

探探的十二种表情

鼠标停一停,它会换一种心情。

搜索本站

输入关键词,例如“上传”“迁移”“JWT”。