首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行搜索的最佳方式

执行搜索的最佳方式
EN

Stack Overflow用户
提问于 2013-02-11 17:51:30
回答 2查看 296关注 0票数 2

我们正在开发一个应用程序,可以在我们的数据库中的产品执行搜索。我们使用的数据库是Amazon Dynamo DB,在任何给定的时间点都将存储至少1000万个产品信息。

用户通过UI输入产品名称,我们希望在2-3秒内显示搜索结果。我们知道DynamoDB将在这次搜索中扮演主要角色,但我们想知道在应用程序端是否还有其他可以做的事情。我们计划使用Memcache缓存搜索,以便在第二次搜索时速度更快。

还有没有什么我们可以实现或处理的,这样搜索就会进行得非常快。这个实现是用Java实现的。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-02-11 17:56:59

Dynamodb没有索引的概念,因此您只能通过主键来快速搜索。

您有一些主要选项:

  1. 预先生成搜索结果,并将搜索关键字存储为散列关键字,将结果的id存储为范围。然后,您可以通过获取主键来获取所有搜索结果
  2. 使用另一个索引来存储所有id。例如,CloudSearch
  3. 如果您想要精确匹配产品名称,则将它们存储在一个单独的表中,该表具有到id

的映射

票数 1
EN

Stack Overflow用户

发布于 2013-02-12 00:20:14

确切的功能是用户搜索产品,并显示在其当前位置半径为5公里范围内匹配的所有产品。对此有什么想法?- JavaMany

因此,您需要对产品属性进行自由文本搜索,并进行地理空间过滤。DynamoDB不支持“开箱即用”的这两个概念中的任何一个(除了执行全表扫描),也不适合关系查询。

您有一些选项-正如其他人提到的,您可以使用CloudSearch作为自由文本搜索属性;这将把10M条记录过滤到一个较小的子集;对于每个选项,您必须从DynamoDB检索经纬度,并将它们与用户点周围半径为5 5KM的范围进行比较。这取决于CloudSearch找到的记录数量,这可能会执行,也可能不会执行。

您必须找到一种方法来使CloudSearch索引保持最新。

另一种方法是使用AmazonRDS,并使用MySQL或MySQL的自由文本搜索和地理空间功能。当然,这可能需要一个模式(我假设您正在努力避免)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14809621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档