NoSQL - 如何正确实施自动建议和最佳匹配?
NoSQL - how to implement autosuggest and best matches properly?
我们正在构建一个汽车及其属性的数据库,应该存储在 DynamoDB 中。
创建 cars
table 并用具有 brand
、model
、year
等属性的对象填充它很容易。
但我们还需要管理界面的一些其他功能:
输入时的建议
创建汽车时,在字段中输入时应建议现有汽车的品牌和型号。
然后我们是否应该在另一个 table 中维护一个品牌和型号列表,并在用户输入时对该 table 进行查询?
或者查询汽车定义的 "rich" table 是否足够好,并获取 brand
的所有值,所有 model
值 brand
有一定的价值等?我的第一个想法是,这将是一项繁重的操作,我们需要一个单独的汽车和型号索引。但我不是 NoSQL 专家...
最佳匹配
在我们的系统中注册新车时,我们希望尽可能使用现有定义的汽车作为参考。
因此,当用户输入品牌、型号、年份等时,我们希望显示几个最佳匹配选项 - 我们可以接受它们的年份等不同,但首先要显示最佳匹配。
对 NoSQL 数据库中的数据进行此类匹配的最佳方法是什么?任何指向工具、概念等的链接将不胜感激:)
提前致谢
在 dynamodb(所有 nosql)中,您创建的 table 越少,您的体系结构就越好(这是我们使用 nosql 的主要原因之一),因此不需要新的 table, 只需添加一个新属性并用您想要的可搜索数据填充它,请记住,dynamodb 查询区分大小写,您只能使用 begins_with或包含函数查询数据
缺点是:
- 您将使用大量阅读容量单位
- 你必须管理好大写字母
- 您必须在每次创建时构造可搜索属性
我建议的解决方案是使用 aws cloudsearch,它提供开箱即用的建议器,您将获得更好的结果并提供更好的用户体验,每次您有新项目时,cloudsearch 中的索引都是自动的,但请注意价格,但是他们会给你 30 天免费
我们正在构建一个汽车及其属性的数据库,应该存储在 DynamoDB 中。
创建 cars
table 并用具有 brand
、model
、year
等属性的对象填充它很容易。
但我们还需要管理界面的一些其他功能:
输入时的建议
创建汽车时,在字段中输入时应建议现有汽车的品牌和型号。
然后我们是否应该在另一个 table 中维护一个品牌和型号列表,并在用户输入时对该 table 进行查询?
或者查询汽车定义的 "rich" table 是否足够好,并获取 brand
的所有值,所有 model
值 brand
有一定的价值等?我的第一个想法是,这将是一项繁重的操作,我们需要一个单独的汽车和型号索引。但我不是 NoSQL 专家...
最佳匹配
在我们的系统中注册新车时,我们希望尽可能使用现有定义的汽车作为参考。
因此,当用户输入品牌、型号、年份等时,我们希望显示几个最佳匹配选项 - 我们可以接受它们的年份等不同,但首先要显示最佳匹配。
对 NoSQL 数据库中的数据进行此类匹配的最佳方法是什么?任何指向工具、概念等的链接将不胜感激:)
提前致谢
在 dynamodb(所有 nosql)中,您创建的 table 越少,您的体系结构就越好(这是我们使用 nosql 的主要原因之一),因此不需要新的 table, 只需添加一个新属性并用您想要的可搜索数据填充它,请记住,dynamodb 查询区分大小写,您只能使用 begins_with或包含函数查询数据
缺点是:
- 您将使用大量阅读容量单位
- 你必须管理好大写字母
- 您必须在每次创建时构造可搜索属性
我建议的解决方案是使用 aws cloudsearch,它提供开箱即用的建议器,您将获得更好的结果并提供更好的用户体验,每次您有新项目时,cloudsearch 中的索引都是自动的,但请注意价格,但是他们会给你 30 天免费