Laravel Scout 用于在 Laravel 应用中实现全文搜索,主要面向需要为 Eloquent 模型添加搜索能力的开发场景。
用途与核心组件:Scout 通过 Searchable trait 让 Eloquent 模型可被搜索;提供多种搜索驱动,包括 Meilisearch、Algolia、database 和 collection;支持模型变更时自动同步索引;并可通过 Search Builder 使用带过滤条件的链式搜索 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 补充:Laravel 13 原生支持 pgvector 向量搜索,提供 Schema::ensureVectorExtensionExists() 与 whereVectorSimilarTo();向量相似度场景可直接用 pgvector,而不通过 Scout 驱动。Scout 仍适用于 Meilisearch/Algolia 的全文搜索,资料给出了全文检索与向量相似度混合使用的代码示例。
版本说明:当前 Scout 11.8 与 Laravel 13 兼容;where() 支持比较运算符,例如 User::search('*')->where('age', '>', 30)->get();自定义引擎中 $builder->wheres 变为 ['field', 'operator', 'value'] 列表;Algolia 使用 filters 而非 numericFilters;Meilisearch 的 scout:delete-all-indexes 仅删除带 SCOUT_PREFIX 前缀的索引。
该技能还规定了代理工作流:实现前并行启动三个代理分别分析代码库、核验 Scout 文档、查询搜索与索引模式,实现后用 sniper 进行验证。资料未提供具体的收费价格、性能基准或其他平台的适配信息,这些内容暂未提供。