Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search NoSQL-如何正确实现自动建议和最佳匹配?_Search_Nosql_Amazon Dynamodb_Autosuggest_Search Suggestion - Fatal编程技术网

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

Search NoSQL-如何正确实现自动建议和最佳匹配?,search,nosql,amazon-dynamodb,autosuggest,search-suggestion,Search,Nosql,Amazon Dynamodb,Autosuggest,Search Suggestion,我们正在建立一个汽车及其性能的数据库,应该存储在发电机中 创建一个cars表,并用具有品牌、型号、年份等属性的对象填充该表很容易 但我们还希望管理界面具有一些其他功能: 键入时的建议 在创建汽车时,在现场输入时,应建议现有汽车的品牌和型号 然后,我们是否应该在另一个表中维护品牌和型号的列表,并在用户键入时查询该表 或者,查询汽车定义的“丰富”表,并获取品牌的所有值,以及品牌具有特定值的所有车型值是否足够好?我的第一个想法是,这将是一个繁重的操作,我们需要一个单独的汽车和车型指数。但我不是NoSQ

我们正在建立一个汽车及其性能的数据库,应该存储在发电机中

创建一个
cars
表,并用具有
品牌
型号
年份
等属性的对象填充该表很容易

但我们还希望管理界面具有一些其他功能:

键入时的建议

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

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

或者,查询汽车定义的“丰富”表,并获取
品牌
的所有值,以及
品牌
具有特定值的所有
车型
值是否足够好?我的第一个想法是,这将是一个繁重的操作,我们需要一个单独的汽车和车型指数。但我不是NoSQL专家

最佳匹配

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

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

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

提前感谢dynamodb(所有nosql)中的

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

缺点是:

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

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

    是的,我可以看到cloudsearch使用了EC2实例——我们根本不想使用服务器,到目前为止做得很好。但是每月只有5美元。。。无论如何,所提到的系统将只由管理人员使用,并且(在开始时)每天只进行几次查找等,所以我认为,发电机的扩展使用应该不会是一个问题吧?但是,如果cloudsearch或elasticsearch能够更快/更容易地实现一个低效的解决方案,我不想浪费很多时间来实现它。我想知道为什么AWS不提供“按使用付费”服务而不是EC2?是的,正如你所说,更高效更快,部署时间更短,但有点贵,所以这取决于你