本教程将展示如何将 Meilisearch 与 Strapi 集成,创建一个基于搜索的网页应用。首先,您将使用 Strapi 的快速入门指南创建一个餐厅集合,然后通过 Meilisearch 搜索该集合。

前提条件

  • Node.js: 活跃 LTS 或维护中的 LTS 版本,当前要求 Node.js >=18.0.0 <=20.x.x
  • npm >=6.0.0 (随 Node.js 安装)
  • 运行中的 Meilisearch 实例 (v >= 1.x)。如需帮助,可参考 安装章节

使用 Strapi 创建后端

项目设置

创建一个名为 my-app 的目录,用于存放应用的 backend 和 frontend 部分。在 my-app 内使用 Strapi 生成后端 API:

npx create-strapi-app@latest back --quickstart

该命令会在名为 back 的新目录中创建 Strapi 应用,并打开管理仪表盘。创建账户以访问该仪表盘。

创建账户后,您将被重定向至 Strapi 的管理仪表盘。这里将用于配置您的后端 API。

构建和管理您的内容

下一步是创建一个新的集合类型(collection type)。集合就像是您内容的蓝图——在本例中,它将是一个餐厅集合。稍后您还将创建一个名为”Category”的集合来组织您的餐厅。

请按照以下步骤操作:完成Strapi快速入门指南中的”Part B: 使用Content-type Builder构建数据结构”以及”Part D: 使用Content Manager向Strapi Cloud项目添加内容”的第2至5步。这些步骤包括:

  • 创建集合类型
  • 创建新条目
  • 设置角色和权限
  • 发布内容

扩展你的数据库

完成 Strapi 快速入门指南的步骤后,在 内容管理器 > 集合类型 下应该会出现两个新的集合:Restaurant(餐厅)和 Category(分类)。点击 Restaurant 可以看到当前只有一条记录。通过点击仪表板右上角的 + 创建新条目 按钮来添加更多记录。

逐一添加以下三家餐厅。对于每家餐厅,你需要先点击 保存,然后点击 发布

  • 名称: The Butter Biscotte
  • 描述: 关于黄油的一切,与健康无关。

接着在页面右下角添加 French food(法式料理)分类。

  • 名称: The Slimy Snail

  • 描述: 美食由大蒜和黄油构成。

  • 分类: French food

  • 名称: The Smell of Blue

  • 描述: 蓝纹奶酪没有过期,这就是它的食用方式。配一点黄油和满满的快乐。

  • 分类: French food

现在你的 Strapi 后端已经准备就绪。Strapi 会自动为你的餐厅集合生成 REST API。请查阅 Strapi 文档了解所有可用的 API端点

接下来,我们将连接 Strapi 和 Meilisearch 并开始搜索。

连接 Strapi 和 Meilisearch

要为 Strapi 添加 Meilisearch 插件,首先需要退出 Strapi 应用。前往运行 Strapi 的终端窗口,按下 Ctrl+C 终止进程。

接下来,在 back 目录中安装插件。

npm install strapi-plugin-meilisearch

安装完成后,由于配置会更方便,建议在重新以开发模式启动前先重建 Strapi 应用。

npm run build
npm run develop

此时,你的 Strapi 应用应该会再次运行在默认地址:http://localhost:1337/admin。在浏览器中打开它,你会看到一个管理员登录页面。输入你创建账户时使用的凭据。

连接成功后,你应该能在屏幕左侧看到新的 meilisearch 插件。

meilisearch 插件页面的设置选项卡中添加你的 Meilisearch 凭据。

现在是将 Strapi 集合添加到 Meilisearch 的时候了。在 meilisearch 插件页面的 Collections 选项卡中,你应该能看到 restaurantcategory 内容类型。

点击 restaurant 旁边的复选框,该内容类型会自动被索引到 Meilisearch 中。

当你在 Collections 选项卡中点击 restaurant 的复选框时,会出现 “Hooked” 字样。这意味着每次你在餐厅内容类型中添加、更新或删除条目时,Meilisearch 都会自动更新。

索引完成后,你的餐厅数据就存储在 Meilisearch 中了。访问 搜索预览,通过搜索 “butter” 来确认一切工作正常。

你的 Strapi 条目会原样发送到 Meilisearch。你可以在发送前修改数据,例如移除某个字段。查看 strapi-plugin-meilisearch 页面 获取所有自定义选项。

下一步

本教程向您展示了如何将 Strapi 集合添加到 Meilisearch。

在大多数实际场景中,您通常会构建一个自定义搜索界面,并使用 Meilisearch 的 API 获取结果。要了解如何快速构建自己的前端界面,请查看前端集成页面指南。