之前已经多次询问过这个问题并回答过,但这些建议似乎都不适用于我的情况。
我有一个用户模型和Micropost模型
用户有许多微博,微博有一个用户。
我正在尝试使用Sunspot同时搜索用户模型和微博模型。
我需要的只是索引模型的正确语法。
我试过了:
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中的特定短语,他们就会得到带有该短语的微博。
据我所见,文档对此没有帮助。
答案 0 :(得分:1)
您的 USER 模型应该是:
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 模型应该是:
class Micropost < ActiveRecord::Base
searchable do
text (:content)
end
end
然后,在 search_controller.rb 文件中:
@search = Sunspot.search(User, Micropost) do |query|
query.fulltext params[:quick_search]
end
@results = @search.results
然后为每个结果创建一个循环:
@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