Ruby on rails 如何使用Sunspot Solr搜索多个表(模型)?

Ruby on rails 如何使用Sunspot Solr搜索多个表(模型)?,ruby-on-rails,ruby-on-rails-3,search,solr,sunspot,Ruby On Rails,Ruby On Rails 3,Search,Solr,Sunspot,我希望用户能够使用一个搜索框来搜索不同的对象。我会在结果页面上区分它们。两者都是全文搜索 我是否应该制作一个搜索控制器,并使用以下内容将所有内容加载到索引操作中: @posts = Post.all @groups = Group.all 有些事情告诉我,这将是非常低效的 我真的不知道从哪里开始,我还没有在互联网上找到任何解决这个问题的方法,但是如果我忽略了什么,请告诉我 谢谢 编辑: 这是我的搜索栏,可在我的网站上全球搜索: -form_tag posts_path, :method

我希望用户能够使用一个搜索框来搜索不同的对象。我会在结果页面上区分它们。两者都是全文搜索

我是否应该制作一个搜索控制器,并使用以下内容将所有内容加载到索引操作中:

@posts = Post.all
@groups = Group.all
有些事情告诉我,这将是非常低效的

我真的不知道从哪里开始,我还没有在互联网上找到任何解决这个问题的方法,但是如果我忽略了什么,请告诉我

谢谢

编辑: 这是我的搜索栏,可在我的网站上全球搜索:

    -form_tag posts_path, :method => :get do
     =text_field_tag :search, params[:search], :id => 'searchfield'
     =submit_tag '',:name => nil, :id => 'searchbutton'
它现在只搜索“Post”模型,并在Post#index视图上显示结果


我希望能够在Post表和Group表中搜索输入到搜索框中的查询,并在同一页面上的两个单独列中显示结果。可能通过搜索控制器/视图

将来自sunspot solr的可搜索指令添加到您的模型中以进行索引。例如:

class Post < ActiveRecord::Base
  searchable do
    text :title, :body
  end
end

class Group < ActiveRecord::Base
  searchable do
    text :name
  end
end

现在您有了两列的数据。

这不是答案,但我发现了一些有用的东西。它是一个帮助您在多个表中搜索的gem:


它有助于将所有可搜索数据(来自不同型号)保存在一个位置。

如果要同时搜索两种类型,可以使用以下表单:

# Pass your models in by class constant
Sunspot.search(Post,Group) do |s| 
    s.fulltext(params[:search])
end
这在wiki中有记录:

你想实现什么目标?在两列中显示结果?在第一组、第二篇文章中展示他们?按相关性顺序显示它们?用代码编辑以解释我的意思。我希望结果显示在两列中,每列对应于对象的类型。但是如果有一个搜索栏,比如说一个用户在“roller skates”中键入内容,我如何同时在两个表中运行该搜索?我应该制作一个搜索控制器吗?现在,
@posts=Post.seach{fulltext params[:search]
正在Post#index操作中执行,因此当我尝试添加
@groups=Group.search{fulltext params[:search]
它不起作用它不断地给我错误
太阳黑子的未定义方法'model_name::Search::StandardSearch:Class
我现在通过一个搜索控制器运行它。Post和Group都被设置为'searchable'明白了!我必须使用不同的格式,而不是:
@posts=Post.Search{fulltext params[:Search]}
等…我必须执行
@search=Post.search do{fulltext params[:search]}end@posts=@search.results
此解决方案将两次调用太阳黑子服务器和两次调用数据库。knowuh下面的答案更可取。
# Pass your models in by class constant
Sunspot.search(Post,Group) do |s| 
    s.fulltext(params[:search])
end