我想知道是否有人对从EC2 Asp.Net应用程序在Amazon SimpleDB上执行关键字搜索的最佳方式有任何想法。
我正在考虑的几个选项是:
1)将关键字添加到多值属性,并使用以下查询进行搜索: 从keywordTable中选择id,其中keyword ='firstword'intersection keyword ='secondword'intersection keyword ='thirdword'
2)创建一个到Katta的Web服务前端:
3)排队的Lucene.Net更新服务,定期将Lucene索引推送到云端。 (绕过'锁定'问题)
答案 0 :(得分:1)
如果您正在寻找严格的SimpleDB解决方案(根据所述问题),Katta和Lucene将不会帮助您。如果您只是在寻找基于“亚马逊基础架构”的解决方案,那么任何选择都将有效。
所有三个选项在设置和管理方面都有所不同,决定哪个最好取决于您的实际需求。
如果您需要简单和最少的管理,具有名为Keyword的多值属性的SimpleDB是您的最佳选择。如果您不需要按相关性排序。没有任何设置或管理,你只需要为你的实际cpu&带宽。
如果您需要的不仅仅是关键字搜索,Lucene是一个很好的选择,但您将自己管理索引的更新。您还必须管理您使用SimpleDB获得的负载平衡,备份和故障转移。如果你不关心故障转移,并且在EC2崩溃的情况下你可以忍受停机时间,那么这就更不用担心了,而且没有理由更喜欢SimpleDB。
在EC2上使用Katta,你将自己管理所有事情。你将拥有最大的灵活性和最多的工作要做。
答案 1 :(得分:1)
只是为了整理这个问题......我们通过为Lightspeed编写自定义搜索提供程序,使用Lightspeed的SimpleDB提供程序,Solr和SolrNet。
为Lightspeed实施ISearchEngine接口的信息: http://www.mindscape.co.nz/blog/index.php/2009/02/25/lightspeed-writing-a-custom-search-engine/
这是我们正在使用的Solr库: http://code.google.com/p/solrnet/
由于Solr可以使用EC2机器轻松扩展,这对我们来说是最有意义的。
答案 2 :(得分:1)
Simple Savant是一个用于SimpleDB的开源.NET持久性库,它包含使用Lucene.NET(我是Simple Savant创建者)的全文搜索的集成支持。
描述了全文索引方法here。