任何原因不使用PostgreSQL的内置全文搜索Heroku?

我准备在Heroku上部署一个需要全文搜索的Rails应用程序。到目前为止,我一直在使用MysqL与Sphinx VPS上运行它。

但是,如果我想在Heroku上使用Sphinx或Solr,我需要支付一个附加组件。

我注意到Postgresql(在Heroku使用的数据库)有内置的全文搜索能力。

有没有原因,我不能使用Postgres的全文搜索?它比Sphinx慢还是有其他一些主要的限制?

编辑,2016 – 为什么不是两个?

如果你对Postgres和Lucene感兴趣,为什么不呢?查看Postgres的ZomboDB扩展,它将Elasticsearch集成为第一类索引类型。仍然是一个相当早期的项目,但它看起来真的有希望我。

> https://github.com/zombodb/zombodb

(技术上不在Heroku上,但仍值得一看。)

披露:我是WebsolrBonsai Heroku附加组件的共同创始人,所以我的观点有点偏向卢塞恩。

我对Postgres全文搜索的看法是,它对于直接的用例是相当固定的,但有很多原因为什么Lucene(以及因此Solr和ElasticSearch)在性能功能方面都优越。

对于初学者,jpountz提供了一个真正优秀的技术答案的问题,Why is Solr so much faster than Postgres?这是值得一两读,真的消化。

我还评论一个recent RailsCast episode比较Postgres全文搜索与Solr的相对优缺点。让我在这里回顾一下:

Postgres的实用优势

>重复使用您已在运行的现有服务,而不是设置和维护(或支付)其他东西。
>远远优于异常缓慢的sql LIKE操作符。
>减少保持数据同步,因为它都在同一个数据库 – 没有应用程序级集成与一些外部数据服务API。

Solr(或ElasticSearch)的优点

在我的头顶,没有特定的顺序…

>单独缩放索引和搜索负载与常规数据库负载
>更灵活的术语分析,​​如语调标准化,语言词干,N-gram,标记移除…其他酷的功能,如拼写检查,“丰富的内容”(例如,PDF和Word)提取
> Solr / Lucene可以做的一切在Postgres full-text search TODO list只是罚款。
>更好和更快的术语相关性排名,在搜索时高效定制。
>对于常见字词或复杂查询搜索效果可能会更快。
>可能比Postgres更高效的索引性能
>通过从主数据存储区中分离索引,更好地适应数据模型中的更改

显然,我认为基于Lucene的专用搜索引擎是更好的选择。基本上,你可以认为Lucene是事实上的搜索专家的开源库。

但是如果你唯一的其他选项是LIKE运算符,那么Postgres全文搜索一个明确的胜利。

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...