NoSQL - 如何正确实施自动建议和最佳匹配?

NoSQL - how to implement autosuggest and best matches properly?

我们正在构建一个汽车及其属性的数据库,应该存储在 DynamoDB 中。

创建 cars table 并用具有 brandmodelyear 等属性的对象填充它很容易。

但我们还需要管理界面的一些其他功能:

输入时的建议

创建汽车时,在字段中输入时应建议现有汽车的品牌和型号。

然后我们是否应该在另一个 table 中维护一个品牌和型号列表,并在用户输入时对该 table 进行查询?

或者查询汽车定义的 "rich" table 是否足够好,并获取 brand 的所有值,所有 modelbrand 有一定的价值等?我的第一个想法是,这将是一项繁重的操作,我们需要一个单独的汽车和型号索引。但我不是 NoSQL 专家...

最佳匹配

在我们的系统中注册新车时,我们希望尽可能使用现有定义的汽车作为参考。

因此,当用户输入品牌、型号、年份等时,我们希望显示几个最佳匹配选项 - 我们可以接受它们的年份等不同,但首先要显示最佳匹配。

对 NoSQL 数据库中的数据进行此类匹配的最佳方法是什么?任何指向工具、概念等的链接将不胜感激:)

提前致谢

在 dynamodb(所有 nosql)中,您创建的 table 越少,您的体系结构就越好(这是我们使用 nosql 的主要原因之一),因此不需要新的 table, 只需添加一个新属性并用您想要的可搜索数据填充它,请记住,dynamodb 查询区分大小写,您只能使用 begins_with包含函数查询数据

缺点是:

  1. 您将使用大量阅读容量单位
  2. 你必须管理好大写字母
  3. 您必须在每次创建时构造可搜索属性

我建议的解决方案是使用 aws cloudsearch,它提供开箱即用的建议器,您将获得更好的结果并提供更好的用户体验,每次您有新项目时,cloudsearch 中的索引都是自动的,但请注意价格,但是他们会给你 30 天免费