Laravel Scout 使用指南
学习如何将 Meilisearch 与 Laravel Scout 结合使用。
在本指南中,您将了解如何设置 Laravel Scout 以便在 Laravel 10 应用中使用 Meilisearch。
先决条件
开始之前,请确保您的机器已安装以下组件:
- PHP
- Composer
您还需要一个 Laravel 应用程序。如果没有,可以通过运行以下命令创建新应用:
安装 Laravel Scout
Laravel 通过 Laravel Scout 提供了开箱即用的全文搜索功能。
要启用该功能,请导航至您的 Laravel 应用目录,通过 Composer 包管理器安装 Scout:
安装 Scout 后,您需要发布 Scout 配置文件。可以通过运行以下 artisan
命令完成:
此命令将在您的应用目录中创建新的配置文件:config/scout.php
。
配置 Laravel Scout 驱动
现在您需要配置 Laravel Scout 使用 Meilisearch 驱动。首先通过 Composer 安装 Scout 与 Meilisearch 配合所需的依赖项:
然后更新 .env
文件中的环境变量:
本地开发
Laravel 官方的 Docker 开发环境 Laravel Sail 已内置集成了 Meilisearch 服务。请注意,通过 Sail 运行 Meilisearch 时,Meilisearch 的主机地址是 http://meilisearch:7700
(而不是常见的 http://localhost:7700
)。
详情请参阅 Docker 的 Bridge 网络驱动文档。
生产环境部署
对于生产环境,我们推荐使用托管版的 Meilisearch Cloud。在 Meilisearch Cloud 中,您可以在项目设置中找到主机 URL。
如果您选择自托管方案,请参阅我们的 生产环境部署指南。
使 Eloquent 模型可搜索
安装并配置好 Scout 后,在 Eloquent 模型中添加 Laravel\Scout\Searchable
trait 即可使其可被搜索。该 trait 会利用 Laravel 的模型观察器来保持模型数据与 Meilisearch 同步。
以下是一个示例模型:
要配置哪些字段存储在 Meilisearch 中,可使用 toSearchableArray
方法。通过此技术可以将模型及其关联关系数据存储在同一文档中。
下面的示例展示了如何在 Meilisearch 中存储模型的关联数据:
配置可筛选和可排序属性
通过 Meilisearch 索引设置来配置哪些属性可以筛选和排序。
在 Laravel 中,你可以通过 config/scout.php
文件配置索引设置:
上面的示例更新了 Contact
模型的 Meilisearch 索引设置:
- 使
organization_id
字段可筛选 - 使
name
和company_name
字段可排序
更改索引设置后,你需要同步 Scout 的索引设置。
同步索引设置
要同步索引设置,请运行以下命令:
示例用法
您构建了一个示例应用程序来演示如何将 Meilisearch 与 Laravel Scout 结合使用。该示例展示了一个 CRM(客户关系管理)应用中的全局搜索功能。
这个演示应用使用了以下功能:
当然,代码已在 Github 上开源。🎉