我正在开发一个目前流量最小的网站。它使用Ruby on Rails构建,并在Heroku的云平台上运行。
作为网站的一部分,我有大量需要搜索的页面,每个页面上只有很少的信息。想想一篇文章表,其中每篇文章只需要对其标题进行索引,但有大约800万篇文章。
Postgres搜索: 当我第一次开始研究这个时,我运行Postgres全文搜索,但显然它没有足够优化搜索来处理这么多索引项目,并且跑得很慢。我有一些搜索超时数据库连接并需要超过30秒才能完成。
Websolr 的: 然后我转到了当时唯一的Heroku附加组件,用于云搜索,Websolr by OneMoreCloud。不幸的是,他们按索引项目的数量收费,这对于像我这样没有流量而且有大量项目需要索引的网站来说是可怕的,我的表现可能比Postgres搜索更糟糕,这是免费的。如果Postgres搜索超时并关闭网站,Websolr将返回空的或部分结果集,使观众认为结果不在数据库中。
指数坦克: 现在,Heroku已经添加了另一个云搜索提供商Index Tank,它仍处于测试阶段。虽然它的测试版是免费的,但我不愿意尝试它们,因为他们的非Heroku服务不是免费的,他们的最高计划只有200万份文件,而且已经花费了每月500美元的费用。
Google Site Search : 我目前正在考虑的一个选项是转移到Google Site Search。谷歌搜索品牌让我相信我不会遇到过去的性能问题。此外,他们的定价非常合理,并且按流量定价。然而,在缺点方面,它并不是真正的集成搜索,因为它不会挂钩到数据库中,而只会查看网页,所以我无法指出一个只能返回的搜索,比如文章在技术文章类别或类似的东西。即使自定义搜索结果的外观似乎也是一种痛苦,因为我必须用XML解析搜索结果,然后使用它来生成我的搜索结果页面,如果我想用元数据进行自定义在显示中,我必须使用已解析的搜索结果来查找我的数据库中的所有结果行。
您是否建议向Stackoverflow社区推荐云或第三方搜索提供商?
答案 0 :(得分:1)
查找http://www.searchblox.com/。另一种替代方案,即使不是云提供商,将使用弹性搜索http://www.elasticsearch.org/。它的设置和使用非常简单,通常可以使用OOTB。
此外,ES的创建者自己将其与其他提供商进行比较: ElasticSearch, Sphinx, Lucene, Solr, Xapian. Which fits for which usage?