首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4和Sunspot:在几个相关模型中进行搜索

Rails 4和Sunspot:在几个相关模型中进行搜索
EN

Stack Overflow用户
提问于 2015-04-27 01:19:01
回答 1查看 125关注 0票数 1

这个问题之前已经被问过几次并得到了回答,但似乎没有一个建议对我有效。

我有一个用户模型和一个Micropost模型

一个用户有多个微博,一个微博有一个用户。

我正在尝试使用Sunspot同时搜索用户模型和微博模型。

我所需要的就是索引模型的正确语法。

我试过这个:

代码语言:javascript
复制
class User < ActiveRecord::Base
 searchable do
 text    (:full_name)
 text    (:last_name)
 text    (:first_name)
 text    (:email)
 text    (:job_title)
 text    (:city)
 text    (:country)
 text    (:address)
 text    (:tag_list)
 text    (:content ) { micropost.content }
 end
end

基于

sunspot solr how to search multiple models correctly? All examples online fail

但这不管用。我所需要的就是搜索上面微博的内容属性。因此,如果一个人搜索一个用户,他们得到一个用户,如果他们搜索一个出现在micropost.content中的特定短语,他们就会得到包含该短语的微博。

据我所知,文档对此没有帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-04-27 01:30:50

您的用户模型应如下所示:

代码语言:javascript
复制
class User < ActiveRecord::Base
 searchable do
 text    (:full_name)
 text    (:last_name)
 text    (:first_name)
 text    (:email)
 text    (:job_title)
 text    (:city)
 text    (:country)
 text    (:address)
 text    (:tag_list)
 end
end

您的MICROPOST模型应如下所示:

代码语言:javascript
复制
class Micropost < ActiveRecord::Base
 searchable do
 text    (:content)
 end
end

然后,在search_controller.rb文件中:

代码语言:javascript
复制
@search = Sunspot.search(User, Micropost) do |query|
             query.fulltext params[:quick_search]
          end
@results = @search.results

然后为每个结果创建一个循环:

代码语言:javascript
复制
@results.each do |result|
   if result.is_a?(User)
     //do something with the result        
   end 
   if result.is_a?(Micropost)
     //do something with the result        
   end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29880837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档