我正准备在Heroku上部署一个Rails应用程序,它需要全文搜索.到目前为止,我一直在使用MySQL和Sphinx在VPS上运行它.
然而,如果我想在Heroku上使用Sphinx或Solr,我需要支付一个附加组件的费用.
我注意到PostgreSQL(Heroku上使用的数据库)具有内置的全文搜索功能.
我为什么不能使用Postgres的全文搜索?它比狮身人面像慢还是有其他一些主要限制?
我正准备在Heroku上部署一个Rails应用程序,它需要全文搜索.到目前为止,我一直在使用MySQL和Sphinx在VPS上运行它.
然而,如果我想在Heroku上使用Sphinx或Solr,我需要支付一个附加组件的费用.
我注意到PostgreSQL(Heroku上使用的数据库)具有内置的全文搜索功能.
我为什么不能使用Postgres的全文搜索?它比狮身人面像慢还是有其他一些主要限制?
如果你对Postgres vs.Lucene感兴趣,为什么两者都不感兴趣?查看Postgres的ZomboDB扩展,它将Elasticsearch集成为一级索引类型.这仍然是一个相当早期的项目,但对我来说它看起来非常有前途.
(从技术上讲,Heroku上没有,但仍然值得一看.)
披露:我是Websolr和Bonsai Heroku插件的联合创始人,所以我的观点有点偏向Lucene.
我对Postgres全文搜索的理解是,对于简单的用例来说,它非常可靠,但Lucene(以及Solr和ElasticSearch)在性能和功能方面都优于它的原因有很多.
首先,jpountz为这个问题提供了一个真正优秀的技术答案,Why is Solr so much faster than Postgres?值得通读几遍才能真正理解.
我还 comments 了一篇recent RailsCast episode篇文章,比较了Postgres全文搜索和Solr的相对优势和劣势.让我在这里重述一下:
LIKE
运算符.在我的头顶上,没有特别的顺序…
显然,我认为基于Lucene的专用搜索引擎是更好的 Select .基本上,你可以把Lucene看作是一个事实上的开源搜索专家库.
但是,如果你唯一的 Select 是LIKE
操作员,那么Postgres全文搜索肯定会成功.