可能重复:选择独立的全文搜索服务器:Sphinx还是SOLR?
我将使用它在我的ruby on rails app上进行全文搜索 .
这是最好的选择 .
solr用java来做这个工作 . 或红宝石中的sphix?
我没有使用Solr的经验,但是Sphinx很容易安装,快速且适用于Thinking Sphinx:http://freelancing-god.github.com/ts/en/indexing.html
还有一个很好的railscast:http://railscasts.com/episodes/120-thinking-sphinx
这个人给你一些争论为什么要使用Sphinx:http://jamesgolick.com/tags/ultrasphinx.html(他使用Ultrasphinx插件连接Rails和Sphinx . 我试过两个并最终使用Thinking Sphinx)
你可以在这里找到两个插件的比较:http://reinh.com/blog/2008/07/14/a-thinking-mans-sphinx.html
Solr可以用Java实现,但这主要是一个实现细节 . Sphinx是基于C的;你知道C吗? LucidImagination提供了一个方便的LucidWorks for Solr发行版,可以快速部署那些不熟悉Java的人 . 具有讽刺意味的是,Solr比Sphinx具有更好的Ruby集成 . 有acts_as_solr插入ActiveRecord,在纯红宝石级别有一些很好的选项,但这不是你的用例 . 您可能正在使用rails,但无论您选择的服务器端语言是什么,您可能需要考虑使用AJAX-Solr并且它有一个fantastic demo . 最后,Solr绝对是一个比Sphinx更大的项目,有更多的历史和信息可以帮助你,包括my book . LucidImagination也提供免费的PDF参考指南 .
虽然sphinx有craigslist,但Solr有http://www.lucidimagination.com/why-lucid/who-uses-lucene-solr
所以我认为答案很清楚 .
我试过了两个,他们都很棒 . 就我而言,solr需要java(因为它基于lucene),而sphinx则不需要 . 这就是为什么我选择狮身人面像,除非我有一个非常好的理由想要专门的solr .
我的经验是针对小数据,思考sphinx(或者超级)一直是一个简单的搜索解决方案,可供开发人员使用,以便让某些东西运行起来 . 一旦数据大于db中的十万行,那么两个插件都会暴露它们与活动记录的紧密耦合程度 . 然后必须 balancer 精神之间的舞蹈,在执行sphinx索引时(在cron中,在部署中等),运行索引的频率,使用的delta索引,以及索引占用的时间等等 . 此外,一旦您的数据变得复杂,关于在搜索中应该如何以及应该显示什么结果,您开始觉得sphinx的可定制性是有限的 .
我们正在将搜索从sphinx插件转移到与我们的活动记录模型的开发和部署生命周期无关的内容中 . 我们还没有决定是否继续使用sphinx或切换到solr . 我们只是希望将搜索和索引与模型分离,然后将其引入到我们的rails应用程序所说的自己的服务中 .
我在不同的项目中使用了它们 . 我会留下solr,因为它更容易安装:但这只是我的经验 . 您可以获得更多信息here .
我也试图比较Solr / Sphinx并找到了另一种不同的方式 . 它的搜索功能:
严格的订单操作员
SENTENCE / PARAGRAPH搜索
如果这些功能在开发环境中很重要,请查看this .
7 回答
我没有使用Solr的经验,但是Sphinx很容易安装,快速且适用于Thinking Sphinx:http://freelancing-god.github.com/ts/en/indexing.html
还有一个很好的railscast:http://railscasts.com/episodes/120-thinking-sphinx
这个人给你一些争论为什么要使用Sphinx:http://jamesgolick.com/tags/ultrasphinx.html(他使用Ultrasphinx插件连接Rails和Sphinx . 我试过两个并最终使用Thinking Sphinx)
你可以在这里找到两个插件的比较:http://reinh.com/blog/2008/07/14/a-thinking-mans-sphinx.html
Solr可以用Java实现,但这主要是一个实现细节 . Sphinx是基于C的;你知道C吗? LucidImagination提供了一个方便的LucidWorks for Solr发行版,可以快速部署那些不熟悉Java的人 . 具有讽刺意味的是,Solr比Sphinx具有更好的Ruby集成 . 有acts_as_solr插入ActiveRecord,在纯红宝石级别有一些很好的选项,但这不是你的用例 . 您可能正在使用rails,但无论您选择的服务器端语言是什么,您可能需要考虑使用AJAX-Solr并且它有一个fantastic demo . 最后,Solr绝对是一个比Sphinx更大的项目,有更多的历史和信息可以帮助你,包括my book . LucidImagination也提供免费的PDF参考指南 .
虽然sphinx有craigslist,但Solr有http://www.lucidimagination.com/why-lucid/who-uses-lucene-solr
所以我认为答案很清楚 .
我试过了两个,他们都很棒 . 就我而言,solr需要java(因为它基于lucene),而sphinx则不需要 . 这就是为什么我选择狮身人面像,除非我有一个非常好的理由想要专门的solr .
我的经验是针对小数据,思考sphinx(或者超级)一直是一个简单的搜索解决方案,可供开发人员使用,以便让某些东西运行起来 . 一旦数据大于db中的十万行,那么两个插件都会暴露它们与活动记录的紧密耦合程度 . 然后必须 balancer 精神之间的舞蹈,在执行sphinx索引时(在cron中,在部署中等),运行索引的频率,使用的delta索引,以及索引占用的时间等等 . 此外,一旦您的数据变得复杂,关于在搜索中应该如何以及应该显示什么结果,您开始觉得sphinx的可定制性是有限的 .
我们正在将搜索从sphinx插件转移到与我们的活动记录模型的开发和部署生命周期无关的内容中 . 我们还没有决定是否继续使用sphinx或切换到solr . 我们只是希望将搜索和索引与模型分离,然后将其引入到我们的rails应用程序所说的自己的服务中 .
我在不同的项目中使用了它们 . 我会留下solr,因为它更容易安装:但这只是我的经验 . 您可以获得更多信息here .
我也试图比较Solr / Sphinx并找到了另一种不同的方式 . 它的搜索功能:
严格的订单操作员
SENTENCE / PARAGRAPH搜索
如果这些功能在开发环境中很重要,请查看this .