2011-03-02 56 views

回答

2

我会使用思维狮身人面像,全文搜索引擎也可部署在heroku上。

它的地理搜索内置:http://freelancing-god.github.com/ts/en/geosearching.html

编辑:

斯芬克斯已准备得差不多了Heroku的,在这里看到:http://flying-sphinx.com/

+0

根据Google集团的帖子(可能已经过时),Heroku不支持Sphinx:https://groups.google.com/forum/#!topic/thinking-sphinx/aWBIf7qhcN8 – 2011-03-02 22:39:38

+0

刚刚编辑了我的答案,它是部分的答案。告诉我,如果你愿意,我删除我的答案,以便你的问题更加明显。 – apneadiving 2011-03-02 22:45:40

+0

+1狮身人面像现在可用,这将是我的选择 – standup75 2011-05-18 19:03:35

3

根据应用程序的规模,你应该能够轻松实现MySQL中的FULLTEXT和SPATIAL索引。一旦您的应用程序变得庞大,即数以亿计的行具有高并发性和每秒数千个请求的倍数,则您可能需要迁移到另一个FULLTEXT或SPATIAL查询解决方案。但是,我不会推荐在早期进行优化,因为要做到这一点非常困难。在可预见的未来,MySQL应该足够了。

您可以阅读关于MySQL here中的空间索引。您可以阅读MySQL here中的全文索引。最后,我建议您采取步骤here的步骤,让您的schema.rb文件和rake任务与这两种索引类型一起工作。

我只使用了MySQL,但我的理解是PostgreSQL也有一个很好的地理空间索引解决方案。

+0

+1你知道一个很好的gem用于向ActiveRecord添加mysql空间支持吗? – 2011-05-12 06:35:04

+0

我真的很喜欢rgeo(https://github.com/dazuma/rgeo),我之前也使用过geokit和GeoRuby。 – 2011-05-12 20:08:34

3

如果您在Heroku有一个数据库,您可以使用Postgres对全文搜索的支持:http://www.postgresql.org/docs/8.3/static/textsearch.html。 Heroku运行的最旧的服务器(共享数据库)在8.3和8.4上。最新的9.0版本。

博客文章注意到这一点其实可以在这里看到:https://tenderlovemaking.com/2009/10/17/full-text-search-on-heroku.html

显然,认为“texticle”(嘿可爱。)插件工程...不错。据我所知,它甚至会为你创建正确的索引。

这是潜在的故事:postgres全文搜索是相当快速和无忧无虑的(虽然Rails集成可能不是很好),虽然它不提供Solr或IndexTank的花里胡哨。确保你阅读了如何正确设置GIN和/或GiST索引,并使用tsvector/tsquery类型。

短的版本:

  • 创建(在这种情况下,基于表达式的)指数:CREATE INDEX pgweb_idx ON pgweb USING gin(to_tsvector('english', body));。在这种情况下,“body”是被索引的字段。
  • 使用@@操作:SELECT * FROM ... WHERE to_tsvector('english', pgweb.body) @@ to_tsquery('hello & world') LIMIT 30

难的部分可以被映射回事情到应用程序的土地,前面提到的博客文章正在努力做到这一点。

专用数据库也可以通过PostGIS进行申请,PostGIS是一个功能强大且功能全面的系统,用于索引和查询地理数据。 OpenStreetMap广泛使用PostgreSQL几何类型(内置),许多人将其与PostGIS结合起来,效果很好。

这些(全文搜索,PostGIS)都利用了Postgres中的可扩展数据类型和索引基础结构,因此您应该期望它们能够为许多许多记录提供高性能(花一点时间仔细查看如果事情看起来很糟糕)。您也可以利用这一事实,即您可以将这些功能与事务和结构化数据结合使用。例如:

CREATE TABLE products (pk bigserial, price numeric, quantity integer, description text);可以很容易地使用全文搜索...任何文本字段都可以,并且它可以与常规属性(在这种情况下为价格,数量)相关联。

0

IndexTank现在免费提供Heroku上的100k文档,我们只是没有更新文档。这可能不足以满足您的需求,但我想我会让您知道以防万一。

0

要通过Postgre进行全文搜索,我推荐pg_search,我现在在heroku上自己使用它。我没有使用texticle,但从我可以看到pg_search最近有更多的开发活动,它建立在texticle上(它不会为您添加索引,您必须自己动手)。

我现在找不到线程,但是我看到Heroku提供了pg geo搜索的选项,但它处于测试阶段。

我的建议是,如果你无法找到postgre解决方案是托管你自己的SOLR实例(在EC2实例上),并使用sunspot solr gem将其与rails集成。

我已经实现了我自己的解决方案,并且还使用了WebSolr。基本上这就是他们给你自己的SOLR实例无忧无虑的。在我看来没有,这是否值钱?对于使用太阳黑子解决方案客户端的集成,所以您只需支付20美元/ 40美元/人就可以为您安装SOLR。我知道你也会得到备份,维护等,但是打电话给我便宜,我更喜欢我自己的实例。另外WebSolr被锁定在1.4.x版本的SOLR上。

相关问题