使用亚马逊服务进行全文搜索

时间:2012-01-16 16:19:08

标签: amazon-web-services full-text-search amazon-rds amazon-simpledb

我想将我的应用程序移动到Amazon SimpleDb,因为我不会自己维护数据库服务。此应用程序承受着沉重的负担。每秒有很多读/写。我不需要一致性和原子性,我希望尽可能保持简单,所以SimpleDb是不错的选择。

问题是,我需要全文搜索能力。我不知道如何使用Amazon SimpleDb做得更好。我在使用mongoDb数据库进行手写全文搜索之前已经实现了。我不得不在我的应用程序层中将文本拆分为单词,并构建自己的索引。这并不难,但我不想再用SimpleDb

再做一次

我发现了一篇有趣的文章 http://codingthriller.blogspot.com/2008/04/simpledb-full-text-search-or-how-to.html

但我不想自己实施。我正在寻找预先制定的解决方案

有哪些选择?

使用Amazon RDS + Lucene会更好吗?

或者可能是SimpleDb的开箱即用解决方案?

要求是:

  • 处理大量并发请求的能力
  • 全文搜索(文本大小不会超过1mb(SimpleDb限制))
  • 最好不要自己管理。

3 个答案:

答案 0 :(得分:4)

Lucene或类似的通常是人们这样做的方式,但不知道你正在使用什么平台,特别是很难提出任何建议。 Simol是SimpleDb的.NET对象持久性框架,可以使用Lucene.NET进行索引。我还看了一些基本的Lucene.NET例子,这些例子并不算太糟糕。如果您正在寻找托管索引服务,可以查看this问题。

为了使您的索引能够很好地完成工作,您很可能不得不根据您的应用程序进行定制。

答案 1 :(得分:3)

亚马逊看起来会在2012年1月18日宣布与搜索相关的内容。http://pandodaily.com/2012/01/17/good-news-for-ec2-customers-amazon-may-launch-new-cloud-search-tomorrow/

用于全文搜索的SimpleDB并不是很好。例如,使用%like%运算符,它不会在单个字段上搜索超过300,000个文档。它将需要大约2或3次尝试 - 大约15秒才能运行只需要100 MB的文本来查找匹配项。我觉得它太慢了,就像其他人一样。请参阅AWS论坛...

答案 2 :(得分:1)

亚马逊CloudSearch已经发布,但没有一种简单的方法可以在不编写代码的情况下将数据从SimpleDB移动到CloudSearch。

然而,API相当简单,它可能会在一两周内运行,具体取决于您的需求(如果您使用现有的SDK)。如果您使用的是没有SDK的编程语言,则需要更长的时间。

http://aws.amazon.com/cloudsearch/