SuperAPI AI 工具集

laravel-scout

编程与开发

查看项目

更新于 10-16 05:48

技能介绍

用途:为 Laravel 的 Eloquent 模型实现全文搜索,可搭配 Meilisearch、Algolia 或数据库驱动。

主要能力:Searchable Trait 让模型可被搜索;支持 Meilisearch、Algolia、database、collection 四种驱动;模型变更时自动同步索引;提供带过滤条件的链式搜索 API。

驱动选择:生产环境推荐 Meilisearch(快速、可自托管、免费);托管服务用 Algolia(按搜索付费);小数据集用 database(无需额外基础设施);测试用 collection(内存中运行,无需搜索引擎)。

安装与配置: composer require laravel/scout composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle 环境变量:SCOUT_DRIVER=meilisearch、MEILISEARCH_HOST=http://127.0.0.1:7700、MEILISEARCH_KEY=masterKey 搜索示例:$results = Article::search('laravel tutorial')->paginate(15);

关键规则:用 toSearchableArray() 控制被索引的数据;用 SCOUT_QUEUE=true 将索引操作放入队列以提升性能;初始化后用 searchable() 批量导入;在 seeder 中用 Scout::withoutSyncing() 暂停索引。

最佳实践:生产用 Meilisearch;索引操作入队;限制索引字段。不要索引密码、令牌等敏感数据;不要忘记导入已有记录;不要在生产使用 collection 驱动。

Laravel 13 说明:原生支持 pgvector 向量搜索,语义搜索(嵌入)可用 Schema::ensureVectorExtensionExists() 与 whereVectorSimilarTo(),属于专门的 laravel-vector-search 技能;Scout 仍适用于全文搜索,向量相似度直接用 pgvector,无需 Scout 驱动。

Scout 11(当前 11.8,兼容 L13):where() 支持比较运算符,如 User::search('*')->where('age', '>', 30)->get();自定义引擎的 $builder->wheres 变为 ['field', 'operator', 'value'] 列表;Algolia 使用 filters 而非 numericFilters;scout:delete-all-indexes(Meilisearch)只删除带 SCOUT_PREFIX 前缀的索引。

资料还描述了一套强制智能体工作流:实现前并行启动三个 Agent(explore-codebase、research-expert、mcp__context7__query-docs),实现后运行 sniper 验证。该工作流属于特定智能体环境的要求,非 Scout 本身功能。