有多个插件可用于将搜索引擎集成到您的Ruby on Rails应用程序中,那么哪个插件是最好的呢?
以上是用于构建搜索引擎的几个Ruby on Rails插件选项。其中哪一个是最好的?有多个插件可用于将搜索引擎集成到您的Ruby on Rails应用程序中,那么哪个插件是最好的呢?
以上是用于构建搜索引擎的几个Ruby on Rails插件选项。其中哪一个是最好的?Thinking Sphinx具有更简洁的语法来定义哪些字段和模型被索引。
UltraSphinx和Thinking Sphinx(最近)都具有超酷的功能,考虑了对象的地理接近程度。
UltraSphinx在加载模型方面存在烦人的问题(它不会加载整个Rails堆栈,因此可能会出现奇怪且难以诊断的错误,这些错误可以通过添加显式的require
语句来处理)。
我们在新项目中使用Thinking Sphinx,在使用地理内容的项目中使用UltraSphinx。
我现在正在经历这个过程,虽然我没有实际经验,但我花了很多时间研究所有的选项。到目前为止,我学到了以下内容:
我有一张电子表格,记录了我试图记录所有这些选项的优缺点。如果有人有兴趣看到它和/或帮助我纠正它,请联系我。一旦我知道它是准确的,我会把它发布在某个地方。
如果您有普通的主键,我的建议是尝试UltraSphinx或Thinking Sphinx。基于良好的文档、特性集和项目活跃度,我将尝试Acts_As_Xapian。
我朋友使用的一个可靠选项是Solr,这是一个使用原始基于Java的Lucene的搜索引擎。当然,要在Rails中使用它,有一个acts_as插件acts_as_solr。
他最近在Montreal on Rails上展示了这个组合,并在他的博客上对如何使用acts_as_solr进行了详细的概述。
它似乎也非常支持法语口音。
如果您像我一样使用共享主机服务(如Bluehost),则您的选项可能受限于提供商提供的内容。在我的情况下,我找不到一个好的可靠方法来启动和保持运行一个独立的服务器,例如Lucene或Solr。
因此,我选择了Xapian,并且它一直为我工作得很好。我研究了2个Rails插件:acts_as_xapian和xapian_fu。 第一个可以让您快速上手,但似乎已经不再维护了。我刚开始使用xapian_fu。
我正在使用acts_as_ferret。它很容易配置,通常速度也很快。内置的active record查找功能非常有用:您可以在搜索找到匹配记录后应用任何条件或连接其他模型。
与sphinx不同,当您添加新数据时,您不必重新索引所有记录。有after_save和after_update钩子,将插入您的新记录到ferret数据库中。这是我选择它的一个重要卖点之一。
当您确实需要批量索引数据时,ferret肯定比acts_as_sphinx慢(3倍)。我最终编写了自己的方法来重新索引模型,其速度与sphinx一样快--它基本上预加载来自DB的所有数据,而不是逐个记录地创建新索引。
ferret文档对于基础知识来说很好,但是一旦涉及到更复杂的搜索、排序和使用dRb服务器来托管远程索引,它就有点稀疏了。话虽如此,它感觉比acts_as_sphinx成熟得多,尽管我对sphinx的经验有限。
我使用acts_as_xapian插件。我按照这个教程:
http://locomotivation.com/2008/07/23/simple-ruby-on-rails-full-text-search-using-xapian
工作得非常好。
我也一直在寻找完美的解决方案。起初我选择了Thinking Sphinx,它运行良好。但由于我打算在Heroku上托管我的Web应用程序,唯一的选择是使用Solr。然而,最大的缺点是主要的acts_as_solr gem的开发似乎在2008年5月之后停止了。所以这对我来说太旧了。我刚刚发现了Sunspot作为一个先进的替代品,并且有最近的更新,所以我会考虑这个。
Heroku提供的另一个选择是选择基于Solr的托管索引服务器,名为Websolr。所需的gem websolr-acts_as_solr 也非常新。
我正在使用一个非常出色的替代方案。我正在使用jruby并直接与lucene交互。
过去我使用过acts_as_solr,但是遇到了一些问题。主要是每次AR保存都会进行同步调用。这不太糟糕,但在我的情况下,保存有时会导致对solr进行许多同步调用,并且偶尔需要比mongrel允许的更长时间,而我将得到一个mongrel超时异常(或类似的异常)。