我需要为客户创建一个搜索工具作为新项目的一部分。记录将是在一个或多个特定日期发生的事情。获得SO的建议最好用于满足以下要求:
我目前的想法是:
我主要担心的是从各种服务(Redis / CloudSearch)中撤回数千个ID然后必须在客户端代码中将它们联合起来的延迟。但是,也许这是没有根据的。
我希望有一个我错过的技术堆栈可以为我解决很多问题。我不想重新发明轮子。
欢迎任何建议!
答案 0 :(得分:3)
我建议您使用Amazon CloudSearch:
- 需要(多方位)搜索成千上万的记录(基于 在类别,日期,价格等领域)
CloudSearch在涉及多方面搜索时非常棒。它在亚马逊自己的网站上大量使用。它的过程非常快速。搜索索引保存在内存中,以确保以非常高的速率提供请求。
- 需要搜索多值字段(即标签)
没问题(适用于任何搜索引擎)
- 需要能够通过静态因素(例如价格,距离)进行订购 等)
没问题(适用于任何搜索引擎)
- 需要能够通过动态/频繁变化的因素进行排序 (例如用户参与/流量等)
您可以在CloudSearch中设置“公式”。它会使您的请求排名更高或更低。 它通常用于: - 根据公布的日期提高结果,提供“新鲜”内容。 - 提升受欢迎的结果
CloudSearch非常擅长此任务。所以它看起来很适合你。
- 只需要能够返回已经存在的记录 用户自己的社交网络中的活动(即'仅显示结果 我的朋友们订婚了')。
我觉得没问题。
- 将部署在EC2
CloudSearch的胜利。您的请求将留在亚马逊网络。让你的要求比通过互联网快得多。
我主要担心的是从各种服务中撤回数千个ID的延迟(Redis / CloudSearch)
CloudSearch不会放慢速度。基于负载it might automatically:更新硬件(更大的实例),启动新实例,跨实例拆分数据。
也许您可以从Amazon而不是Redis切换SimpleDB?它可以让你轻松扩展。
但在使用Amazon Cloud Search(或任何搜索引擎数据库)时使用其他数据库并不罕见。
也许在RDBMS中进行大部分工作,使用CloudSearch进行全文搜索? 也许。但要小心,RDBMS不像云搜索那样容易扩展。
顺便说一下,它是Amazing Cloud Search的创建者,但我不是在为Amazon Cloud Search工作:-) 我觉得技术真的很棒(当它符合你的需要时)。
希望有所帮助。并希望它不会太乱。