在rails应用程序上进行站点范围搜索

时间:2009-08-27 23:10:43

标签: mysql ruby-on-rails search plugins

我正在尝试将搜索功能添加到我的某个rails应用程序中。我只是需要它来搜索相当多的模型的mysql列。我想知道最好的办法是什么。我想我应该使用一个插件,但我没有看到任何人真的推荐一个在另一个上面。你会推荐其他所有人吗? acts_as_ferret怎么样?感谢。

3 个答案:

答案 0 :(得分:1)

我从未使用acts_as_ferret。这是你可以做的事情。像这样创建一个表:

create_table(:indexed_models) do |t|
  t.column :name, :string
  t.column :model_id, :id
  t.column :index, :string
end

对于要搜索的每个模型,连接可搜索列中的值以创建“索引”。将结果插入indexed_models表。如果名称是模型的名称,则model_id是主键,index是可搜索的内容。当您指定为“可搜索”的模型发生更改时,使用观察者创建和更新indexed_models表。

对indexed_models的索引字段进行文本搜索,然后根据返回的模型名称&生成一个模型容器。主键。

我也从未使用过这种方法,但我也一直都这么认为。

答案 1 :(得分:1)

Searchlogic可能值得一试。 ryanb先生刚刚做了awesome railscast。如果您正在寻找全文解决方案,他还有一个screencast on Thinking Sphinx

答案 2 :(得分:1)

我强烈推荐 Sphinx 作为搜索守护程序和索引器。它非常好,可定制和可扩展。

作为客户端和前端库,使用 UltraSphinx ThinkingSphinx 。第二个最近得到了更好的支持。