【问题标题】:Implementing search functionality in firebase (discussion and suggestions)在 firebase 中实现搜索功能(讨论和建议)
【发布时间】:2021-08-05 04:37:57
【问题描述】:

我正在开发一个关于 Angular 的电子商务项目,我需要在其中实现搜索功能。现在我听说了 algoila 和 Elastic Search,我们可以将它们用作第三方服务来索引数据库。

现在我通常在开发小规模应用程序时使用它来维护一个由字符串、字符组合而成的数组,它是从实际字符串中提取的。 举个例子,如果我要存储产品数据,其中有产品名称、产品类别、产品部门等字段。

那么我会怎么做,我将组合这三个字段中的字符串,例如,产品名称 =“某些产品”;产品类别=“某些类别”;产品部门=“某个部门”; 那么我的结果数组将是 [S, o, m, e, So, Som, Some, Some P, Some Pro, Some Prod, Some Produ, Some Produc, Some Product, Product, P, r, o, d, u , c, t 等也适用于其他领域] 并在客户端获取结果,我用来接受来自用户的字符串并查询该字符串是否存在于特定或一组文档的数组中。然后返回结果。

"select name from PRODUCTS where productname LIKE '%" + keyword + "%'";

我正在尝试通过为查询创建搜索标签来实现上述功能。

我看到了一些相同的线程和堆栈溢出,并且

startAt and endAt

查询并不能解决问题,就像 SQL 查询执行的那样。

所以我的问题是,如果我不想使用提到的第三方服务而是使用我的逻辑来实现搜索,那么在大数据和高流量搜索请求的情况下,未来逻辑的瓶颈是什么。

对于注释,我现在不考虑模糊搜索。因为如果我的逻辑是可实现的并且瓶颈是可以容忍的,在接下来的开发阶段,我可以维护客户的搜索数据库以及在没有得到结果后的行为,即他们手动打开的内容。通过机器学习和创建新的搜索标签来附加搜索逻辑的数组。

【问题讨论】:

  • 如果您只想搜索以某些特定字符(不是 LIKE 查询)开始的字符串,stackoverflow.com/questions/56001098/…可能会感兴趣>
  • 您接受了一个未回答此问题的答案。该问题特别指出您想要一个解决方案来进行 SQL Like 查询 LIKE '%" + keyword + "%'" 并且接受的答案没有这样做 - 它只查询 的字符串以相同的字符开始。SQL LIKE 查询匹配字符串中的字符串(基于问题中的格式),例如,它会查找在任何位置具有keyword 的任何值。我只是为了清楚起见而指出这一点,以便未来的读者对接受的答案有一个清晰的理解(这是一个很好的答案,只是不是 the 答案)
  • 另外,请注意 Firestore 查询和排序区分大小写,因此如果您想使用答案中的方法,则必须考虑大小写匹配。

标签: firebase google-cloud-firestore


【解决方案1】:

出于与您提到的相同原因,我们在其中一个项目中使用了相同的技术。在firestore 数据库中,您可以使用array-contains 查询参数来获取预期的数据。我建议在输入搜索字段后添加延迟,这样您就不会读取每个按键的数据。也许也只能在输入 3 个字母后进行搜索。这取决于您的用例。我也会使用小写或大写并将搜索字符串解析为它(如果它适合您的用例)。

正如您提到的,它仅适用于基本搜索和较小的文本值,但在我们的例子中,它可以正常工作并且符合预期。

【讨论】:

  • 你能告诉我在大产品数据的情况下它是如何工作的吗?
  • 我们的 Aapp 已经处于测试阶段,我们还没有发现任何关于搜索的问题。我预计不会出现任何问题,因为我们正在执行通常的 Firestore 查询。您拥有的唯一限制是firestore 中的数组。你可以在这里找到更多关于它们的信息:cloud.google.com/firestore/docs/best-practices
  • 这不能按原样工作。 Firebase 查询区分大小写,因此player_name_as_array 中的所有元素都不会匹配玩家名称。见this answerthis answer
  • 我们在搜索时将所有字母小写。这是出于这样的目的。
猜你喜欢
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
相关资源
最近更新 更多