我需要为客户创建一个搜索工具,作为新项目的一部分。记录将是在一个或多个特定日期发生的事情。很高兴获得 SO 的建议,了解哪些工具最适合满足以下要求:
我目前的想法是:
我主要担心的是从各种服务 (Redis/CloudSearch) 中提取可能有数千个 ID,然后必须在客户端代码中合并它们的延迟。然而,这也许是没有根据的。
我希望可能有一个我错过的技术堆栈可以为我解决很多问题。我不想重新发明轮子。
欢迎提出任何建议!
最佳答案
我建议您使用 Amazon CloudSearch 来满足您的要求:
- Needs to (multi-faceted) search tens of thousands of records (based on fields such as category, date, price etc)
CloudSearch 在多方面搜索方面非常出色。它在亚马逊自己的网站上被广泛使用。而且它的过程非常快。搜索索引保存在内存中,以确保能够以非常高的速率处理请求。
- Needs to search on multi-value fields (i.e. tags)
没问题(对于任何搜索引擎)
- Needs to be able to order by static factors (such as price, distance etc)
没问题(对于任何搜索引擎)
- Needs to be able to order by dynamic / frequently changing factors (such as user engagement / traffic etc)
您可以在 CloudSearch 中设置“公式”。它将使您的请求排名更高或更低。 它通常用于: - 通过提高基于发布日期的结果排名来提供“新鲜”内容。 - 提升受欢迎的结果
CloudSearch 非常擅长这项任务。所以它看起来很适合你。
- Needs to be able to only return records for which there has been activity in the user's own social network (i.e. 'only show me results my friends have engaged with').
我想这没问题。
- Will be deployed in EC2
CloudSearch 的胜利。您的请求将保留在亚马逊网络中。让您请求比通过互联网更快。
My main concern is the latency of pulling back perhaps many thousands of IDs from various services (Redis/CloudSearch)
CloudSearch 不会减慢速度。基于负载it might automatically :更新硬件(更大的实例),启动新实例,跨实例拆分数据。
或许您可以从 Amazon 换成 SimpleDB 而不是 Redis?它将使您轻松扩展。
但是在使用 Amazon Cloud Search(或任何搜索引擎数据库)时使用其他数据库的情况并不少见。
Perhaps do the bulk of the work in an RDBMS, with CloudSearch for full-text searching? Maybe. But be carefull RDBMS don't scale up as easily as Cloud Search.
顺便说一句,它是Amazing Cloud Search的创造者但我不为 Amazon Cloud Search 工作 :-) 我只是觉得这项技术真的很棒(当它满足您的需要时)。
希望对您有所帮助。希望它不会太乱。
关于search - 对多方面搜索软件栈的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18739604/
我在开发的Rails3网站的一些搜索功能上遇到了一个小问题。我有一个简单的Post模型,如下所示:classPost我正在使用acts_as_taggable_on来更轻松地向我的帖子添加标签。当我有一个标记为“rails”的帖子并执行以下操作时,一切正常:@posts=Post.tagged_with("rails")问题是,我还想搜索帖子的标题。当我有一篇标题为“Helloworld”并标记为“rails”的帖子时,我希望能够通过搜索“hello”或“rails”来找到这篇帖子。因此,我希望标题列的LIKE语句与acts_as_taggable_on提供的tagged_with方法
我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
寻找有用的ruby的好网站是什么? 最佳答案 AgileWebDevelopment列出插件(虽然不是rubygems,我不确定为什么),并允许人们对它们进行评级。RubyToolbox按类别列出gem并比较它们的受欢迎程度。Rubygems有一个搜索框。StackOverflow对最有用的rails插件和rubygems有疑问。 关于ruby-如何搜索有用的ruby,我们在StackOverflow上找到一个类似的问题: https://stacko
我有很多这样的文档:foo_1foo_2foo_3bar_1foo_4...我想通过获取foo_[X]的所有实例并将它们中的每一个替换为foo_[X+1]来转换它们。在这个例子中:foo_2foo_3foo_4bar_1foo_5...我可以用gsub和一个block来做到这一点吗?如果不是,最干净的方法是什么?我真的在寻找一个优雅的解决方案,因为我总是可以暴力破解它,但我觉得有一些正则表达式技巧值得学习。 最佳答案 我(完全)不懂Ruby,但类似这样的东西应该可以工作:"foo_1foo_2".gsub(/(foo_)(\d+)/
我读了"BingSearchAPI-QuickStart"但我不知道如何在Ruby中发出这个http请求(Weary)如何在Ruby中翻译“Stream_context_create()”?这是什么意思?"BingSearchAPI-QuickStart"我想使用RubySDK,但我发现那些已被弃用前(Rbing)https://github.com/mikedemers/rbing您知道Bing搜索API的最新包装器(仅限Web的结果)吗? 最佳答案 好吧,经过一个小时的挫折,我想出了一个办法来做到这一点。这段代码很糟糕,因为它是
给定一个元素和一个数组,Ruby#index方法返回元素在数组中的位置。我使用二进制搜索实现了我自己的索引方法,期望我的方法会优于内置方法。令我惊讶的是,内置的在实验中的运行速度大约是我的三倍。有Rubyist知道原因吗? 最佳答案 内置#indexisnotabinarysearch,这只是一个简单的迭代搜索。但是,它是用C而不是Ruby实现的,因此自然可以快几个数量级。 关于Ruby#index方法VS二进制搜索,我们在StackOverflow上找到一个类似的问题:
我正在使用Maruku,将Markdown(超集)转换为HTML,你知道我该怎么做才能从HTML转换为Markdown吗? 最佳答案 Google发现了一个名为reverse_markdown的ruby脚本.它似乎可以满足您的需求。 关于ruby-on-rails-我需要从HTML转到markdown,有什么建议吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/175162
我有一个表,'jobs'和一个枚举字段'status'。status具有以下枚举集:enumstatus:[:draft,:active,:archived]使用ransack,我如何过滤表,比如说,所有事件记录? 最佳答案 你可以像这样在模型中声明自己的掠夺者:ransacker:status,formatter:proc{|v|statuses[v]}do|parent|parent.table[:status]end然后您可以使用默认的搜索语法_eq来检查相等性,如下所示:Model.ransack(status_eq:'ac