在Ruby On Rails中搜索

4

我有一个小网站,大约有500张照片和每天150个访问者,它托管在Dreamhost上。我想添加一个简单的搜索引擎,不需要运行长时间进程,因为共享主机不允许。

搜索引擎应该处理不同字段,属于各种模型:照片、照片作者姓名、照片评论内容等等。

有没有可以帮助的插件?

6个回答

4
MySQL的全文搜索功能通常在任何共享托管环境中都可用,是添加此类功能的好方法。唯一的缺点是它仅适用于MyISAM表格,而这些表格通常已被InnoDB取代。
我看到过的方法是创建模型记录的派生副本,专门用于搜索目的,其中一个很好的例子是维基百科数据库架构。这些副本需要与主记录保持同步,但可以通过after_save处理程序或简单的SQL更新语句轻松完成。
需要注意的是,ActiveRecord无法理解全文索引。需要使用相当丑陋的扩展来使其协作,尽管我有一个MySQL黑客集合中捆绑的示例。

http://github.com/theworkinggroup/rails_mysql_hacks/tree/master


3

2

我认为acts_as_indexed插件是满足您需求的最佳选择。它不需要单独的服务器,可以在文件系统中自动创建索引。在类似于您的网站上,它的速度非常快且易于配置。


1

acts_as_ferret 很可能会为您提供良好的服务。

但是我不知道 Ferret 在像您这样的设置上是否能够正常运行。


我认为Ferret作为后台进程运行。 - tadman
有人知道Ferret是否需要后台进程吗? - collimarco
你需要在生产环境中运行DRb服务器。Ferret是个垃圾,你应该寻找其他没有那么多问题的东西。 - Mark Stahler

1

Ferret或Sphinx将需要专用的后台进程。您唯一的选择似乎是使用正确索引的MySQL全文搜索。


0

你可能想要了解Sphinx/Thinking Sphinx,以进行快速全文搜索。

Thinking Sphinx

我不知道在Dreamhost上安装Unix软件包和整个过程是否过于繁琐,但这是一个非常快速和强大的解决方案,将来可以满足你的需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接