首页 > 解决方案 > NoSQL - 如何正确实现自动建议和最佳匹配?

问题描述

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

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

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

打字时的建议

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

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

或者查询汽车定义的“丰富”表并获取所有值、具有特定值的所有值等是否brand足够好?我的第一个想法是这将是一项繁重的操作,我们需要一个单独的汽车和模型索引。但我不是 NoSQL 专家......modelbrand

最佳匹配

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

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

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

提前致谢

标签: searchnosqlamazon-dynamodbautosuggestsearch-suggestion

解决方案


在dynamodb(全是nosql)中,你创建的表越少,你的架构就越好(这是我们使用nosql的主要原因之一),所以不需要新表,只需添加一个新属性并用可搜索的数据填充它您需要,请记住,通过 dynamodb 进行的查询区分大小写,您只能使用begin_withcontains函数来查询数据

缺点是:

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

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


推荐阅读