使用Rails进行全文搜索

我一直在研究为Rails搜索插件/gem。 大多数文章将Ferret(Lucene)与Ultrasphinx或者可能是Thinking Sphinx进行了比较,但没有人谈论SearchLogic 。 有没有人有任何关于这个比较的线索? 你用了什么,它的表现如何?

  • thinking_sphinx和sphinx工作得很漂亮,没有索引,查询,安装问题(5或6安装,包括生产slicehost)

  • 为什么不是每个人都使用狮身人面像,比如说craigslist? 在这里阅读它的局限性(一年半的旧文章。狮身人面像开发人员,Aksyonoff,正在研究这些,他正在提供function和可靠性,并以惊人的速度剔除错误)

http://codemonkey.ravelry.com/2008/01/09/sphinx-for-search/

http://www.ibm.com/developerworks/opensource/library/os-php-apachesolr/

全文搜索引擎的比较 – Lucene,Sphinx,Postgresql,MySQL?

  • 雪貂:安装简单,不干活,索引速度很慢(一个mysql db:sphinx:3秒,雪貂:50分钟)。 在负载下生产中的drb服务器中记录良好的问题(索引损​​坏)。 话虽如此,我已经在develometn中使用它,因为3年前出现了act-as_ferret,它对我有好处。 在某些情况下,不遵守搬运工堵塞是一个优势。

  • Lucene和Solr是开源搜索的大猩猩/马克卡车/重量级冠军。 这些团队在solr 14版本中已经做了大量新function:

  • act-as-solr:一旦tomcat或docker到位,效果很好,但那些有时是痛苦的。 由mattmatt提供的AAS fork是主要的fork,但该项目相对没有维护。

  • 重新安装tomcat:SOLR / lucene毫无疑问是我见过的任何软件包的最佳知识库/支持搜索引擎(我想我并不感到惊讶),这里的搜索框:

http://www.lucidimagination.com/

  • 太阳黑子新的ruby包装,建立在solr-ruby上。 看起来很有希望,但我无法在OSX上安装它。 索引所有ruby对象,而不仅仅是通过AR的数据库

  • 有一点非常有意义的是安装2个搜索插件,例如sphinx和SOLR,sphinx和ferret,看看它们返回的结果有多不同。 它就像@sphinx_results - @ferret_results一样简单


刚刚看到这篇文章和回复

http://zooie.wordpress.com/2009/07/06/a-comparison-of-open-source-search-engines-and-indexing-twitter/

http://www.jroller.com/otis/entry/open_source_search_engine_benchmark

http://www.flax.co.uk/blog/2009/07/07/xapian-compared/

首先,我明显的偏见:我创造和维护思维斯芬克斯。

事实上,我实际上看到Ben Johnson(SearchLogic的创建者)昨晚出现在纽约ruby会议上。 SearchLogic仅限SQL – 因此,如果您不处理大量表,并且不需要相关性排名,那么它可能正是您正在寻找的。 语法也很干净。

但是,如果您希望所有查询智能都由您自己的代码处理,那么Sphinx或Solr(我认为是Lucene)可能会更好地解决问题。

SearchLogic是一个很好的插件,但它真的是为了让你的搜索代码更具可读性,它不提供Sphinx所做的自动索引。 我没有使用过雪貂,但是狮身人面像非常强大。

http://railscasts.com/episodes/120-thinking-sphinx

很棒的介绍,看看它有多灵活。

我没有使用过SearchLogic,但我可以告诉你,Lucene是一个非常成熟的项目,它有多种语言的实现。 它快速而灵活,API使用起来很有趣。 这是一个不错的选择。

鉴于这个问题仍然在google上进行全文搜索排名很高,我真的很想说如果你有兴趣在你的Rails应用程序中添加全文搜索function,那么今天太阳黑子会更强大(并且希望Solr落后你为此而且。 你可以在这里查看完整的教程。

虽然我们在这里,另一个到达现场的竞争者是ElasticSearch ,它的目标是建立在Lucene之上的实时全文搜索引擎(但与Solr相比,做的事情有所不同)。 ElasticSearch包括开箱即用的分片和复制到多个节点,更快的实时搜索,“filter”,允许您在符合条件的东西变得可用时接收通知,并且它可以通过更多其他function快速移动。 在它之上构建一些东西很容易,因为API很简单,完全基于使用JSON作为格式的REST。 可以说你甚至不需要一个插件来使用它。

就个人而言,我不打扰网络应用程序的数据库不可知,并且非常高兴使用pg83中的全文搜索。 好处是,如果您更改框架/语言,您仍然可以进行全文搜索。

对于任何寻找没有任何依赖关系的简单搜索gem的人,请查看acts_as_indexed