【问题标题】:NoSQL - how to implement autosuggest and best matches properly?NoSQL - 如何正确实现自动建议和最佳匹配?
【发布时间】:2018-12-27 19:26:43
【问题描述】:

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

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

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

输入建议

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

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

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

最佳匹配

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

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

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

提前致谢

【问题讨论】:

    标签: search nosql amazon-dynamodb autosuggest search-suggestion


    【解决方案1】:

    在dynamodb(都是nosql)中,建表越少,架构越好(这是我们使用nosql的主要原因之一),所以不需要新表,只需添加新属性并填充您想要的可搜索数据,请记住,dynamodb 查询区分大小写,您只能使用 begins_withcontains 数据查询功能

    缺点是:

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

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

    【讨论】:

    • 是的,我可以看到 cloudsearch 使用 EC2 实例 - 我们希望完全避免使用服务器,并且到目前为止做得很好。但它只有 5 美元/月...无论如何,提到的系统只会由管理人员使用,并且(开始时)每天只有几次查找等,所以发电机的扩展使用不应该是一个问题,我想?但是,如果使用 cloudsearch 或 elasticsearch 实现更快/更容易,我不想浪费大量时间来实现低效的解决方案。我想知道为什么 AWS 不将其作为“按使用付费”服务而不是 EC2 提供?
    • 是的,正如你所说,效率更高更快,部署时间更少,但有点贵,所以这取决于你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多