【发布时间】: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