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