
Firebase 是一个 BaaS(后端即服务)平台。其后端服务之一是 Cloud Firestore,它允许您使用第三方扩展执行全文搜索。
Firebase 用户可以使用适用于多种编程语言(包括 Swift、Kotlin、Python、Java、PHP、Ruby 等)的 SDK 中提供的一组函数来查询 Cloud Firestore 中的文档集合。
Cloud Firestore 不提供原生索引,因此用户必须使用第三方服务进行文档索引和执行 AI 驱动的搜索。
本教程将指导您完成使用 Meilisearch 扩展从 Cloud Firestore 索引文档的步骤。
1. 部署 Meilisearch
您首先需要在云服务上运行 Meilisearch。您可以选择自行托管,也可以使用Meilisearch Cloud以获得更简单的设置。
此步骤是必需的,因为 Meilisearch 将提供 Firebase 文档的索引和搜索功能。Meilisearch 利用机器学习 (ML) 模型将文档(JSON 文件)转换为矢量嵌入,这些嵌入存储在向量空间中,以便进行快速实时数据库检索。
要在本地安装 Meilisearch,您可以运行以下 cURL 命令
# Install Meilisearch curl -L https://install.meilisearch.com | sh
然后你需要运行 Meilisearch
# Launch Meilisearch ./meilisearch --master-key="aSampleMasterKey"
现在让我们看看如何使用Meilisearch 扩展创建连接到 Meilisearch 的 Firebase 项目。
2. 创建 Firebase 项目
注意:如果您已经有一个包含文档的 Firebase 数据库的 Firebase 项目,则可以跳过此步骤。
一旦 Meilisearch 启动并运行,您就可以创建一个 Firebase 项目,对其进行配置,并添加一个 Firestore 数据库。
有多种方法可以在 Firebase 上配置项目。您可以直接在 Firebase 控制台上进行,也可以使用 API。
在控制台上,您的项目页面如下所示
在左侧,单击“构建”并选择“Firestore 数据库”。
从那里,您可以开始向您的新数据库添加文档。
现在让我们看看如何将 firestore-meilisearch 连接到 Cloud Firestore。
3. 安装 Meilisearch 的 Firebase 扩展
如果您查看 Firestore Cloud 页面中的扩展,您将找不到 Meilisearch 作为默认扩展。因此,您需要从 Firebase 扩展中心安装它。
您需要激活Blaze 定价计划才能添加此扩展和其他扩展。即使不使用此扩展,您也将为 Firebase 资源支付少量费用(通常约为每月 0.01 美元)。
如果您没有结算账户,您可以在 Google Cloud Console 中快速创建一个。完成后,您可以激活扩展并设置预算金额。
通过这些步骤,结算账户已成功连接到 Blaze 定价计划。
激活 firestore-meilisearch 扩展的下一步是检查 Firebase 项目中的 API。如果未启用所需的 API,系统会要求您激活它们。
启用 API 后,您将获得一个服务帐户。最后,系统会要求您配置扩展,其中包括设置位置、集合路径、要索引的字段以及 Meilisearch 索引名称、主机和密钥(可选)。
在下面的示例中,我们为电影创建了一个集合
您现在可以安装扩展了,大约需要三到五分钟。
安装完成后,您可以测试 Meilisearch,但首先,您需要检查您的 Firebase 项目中是否有一个集合,其名称与扩展中配置的名称相同。
如果不是,您可以访问项目的仪表板并相应地添加您的集合。
这是我们在示例中使用的数据
标题:霍比特人:意外之旅
海报 <https://image.tmdb.org/t/p/w500/yHA9Fc37VmpUA5UncTxxo3rTGVA.jpg>
概述:比尔博·巴金斯,一个享受安静生活的霍比特人,被灰袍巫师甘道夫和十三个矮人卷入一场史诗般的任务,他们寻求从巨龙史矛革手中夺回他们的山中家园。
上映日期:1353888000
添加这部电影后,您应该能够在访问 Meilisearch 的搜索预览时看到它
干得好!您已成功安装 Meilisearch Firestore 扩展!
当您从 Firestore 集合中添加、更新和删除文档时,它们将同步镜像到 Meilisearch 中。
管理您的扩展
要访问扩展的概览面板,首先单击 Firebase 侧边栏菜单上的“扩展”选项卡,然后找到 Meilisearch 扩展并单击“管理”。最后,单击“扩展配置”,您现在可以更改集合、主机、索引等。
访问您的日志允许您监控您的云函数并获取不同级别的信息。您可以通过“扩展”选项卡访问扩展的日志。或者,您也可以访问“函数”选项卡并选择“日志”,如下图所示。
4. 设置搜索界面
在上一章中,我们成功地在 Firestore 上安装和配置了 Meilisearch 扩展。现在是时候使用一个简单的搜索引擎应用程序来查询数据了。在这里,我们将介绍如何使用这个 GitHub 存储库为您的项目创建一个搜索栏。
用数据填充您的 Firestore 集合
第一步是向我们的 Firestore 数据库添加更多文档。在我们的例子中,我们将使用这个电影集合。有关添加和管理数据的更多信息,请参阅 Firebase 文档。
将内容添加到 Firestore 数据库后,请访问您的 Meilisearch 搜索预览,以检查 Meilisearch 是否已成功索引您的文档。
搜索您的文档
现在让我们创造一个出色的搜索体验。有很多方法可以做到这一点,但这次我们将保持简单,使用instant-meilisearch,这是我们用于即时搜索 JavaScript 库的插件。
在您首选的开发环境中创建一个 index.html 文件。此 HTML 页面应包含一个搜索栏和一个用于显示搜索结果的框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Meilisearch demo</title> <link rel="stylesheet" href="<https://cdn.jsdelivr.net.cn/npm/instantsearch.css/themes/algolia-min.css>" /> </head> <body> <div> <div id="searchbox"></div> <div id="hits"></div> </div> <script src="<https://cdn.jsdelivr.net.cn/npm/@meilisearch/instant-meilisearch/dist/instant-meilisearch.umd.min.js>"></script> <script src="<https://cdn.jsdelivr.net.cn/npm/instantsearch.js@4>"></script> <script> const searchClient = instantMeiliSearch( 'your Meilisearch url', 'your Meilisearch API key' ) const search = instantsearch({ indexName: 'movies', searchClient }) search.addWidgets([ instantsearch.widgets.searchBox({ container: '#searchbox', }), instantsearch.widgets.hits({ container: '#hits', templates: { item: ` <div style="text-align:center;"> <div class="hit-name"> {{#helpers.highlight}}{ "attribute": "title" }{{/helpers.highlight}} </div> </br> <div> <img src="{{poster}}" width="200px" /> </div> </div> `, }, }), ]) search.start() </script> </body> </html>
请记住用您自己的数据集替换示例的配置。这可能包括 indexName(如果您将索引命名为“movies”以外的其他名称)、您的实例 URL 和您的 API 身份验证令牌。
如果一切顺利,您应该能够访问您的 index.html 文件并立即开始搜索
恭喜!您已成功为 Cloud Firestore 添加了全文搜索功能。只要安装了 firestore-meilisearch 扩展,您的 Firebase 集合和 Meilisearch 索引将自动保持同步。
Firebase 搜索如何使用?
Firebase 通过第三方解决方案在索引字段上提供全文搜索功能。常见的用例包括
- 用户资料:按姓名或电子邮件筛选用户。
- 产品目录:按类别或价格搜索商品。
- 博客文章:按标题或标签查找文章。
- 地理位置:使用地理数据查询地点。
Firebase 有向量搜索吗?
不。Firebase 缺乏用于语义或 AI 驱动查询的内置向量搜索。但是,Meilisearch 扩展通过索引 Firestore 文档来启用向量搜索,从而允许基于相似性的搜索。
Firebase 支持全文搜索吗?
不。Firebase 仅支持精确字符串匹配。对于容错、同义词或排名结果等功能,Meilisearch 扩展会索引 Firestore 数据以提供快速、灵活的全文搜索。
使用 Meilisearch 在您的 Firebase 应用中启用可靠搜索
为您的 Firebase 应用添加搜索功能不必是一个复杂的过程。事实上,通过适当的设置,您可以为用户提供快速、准确的结果。
关键是:从简单开始,智能扩展,并使用 Meilisearch。