[英]How to Add record in sunspot “search.results”
我在我的项目中检测到 N + 1。
我有这两个模型
class Person
has_one :profile
delegate :first_name, :middle_name, :last_name, :full_name, to: :profile
searchable do
text :first_name, stored: true
text :middle_name, stored: true
text :last_name, stored: true
text :full_name, stored: true
end
end
class Profile
delegate :first_name, :middle_name, :last_name, :full_name, to: :profile
def full_name
#some code that will output full name
end
end
这是我的 controller 的人
def index
args = search_params
search = person_search(args)
@persons = search.results
end
def persons_search(args)
fulltext_fields = %i[first_name last_name full_name].freeze
Person.search do
if params.key?(:q)
fulltext params[:q], fields: fulltext_fields, query_phrase_slop: 0, minimum_match: 2 do
fulltext_fields.each { |field| highlight field, max_snippets: 3, fragment_size: 100 }
end
end
fulltext_fields.each do |field|
fulltext params[field], fields: field, query_phrase_slop: 0, minimum_match: 3 if params.key?(field)
end
end
end
好的,现在我解释后端现在让 go 到 HTML
她是我的桌子
tbody
- @members.each do |member|
tr
td.p-2 = member.reference_number
td.p-2 = member.first_name <----------- THIS IS THE N + 1
正如您在我的表格中看到的那样,我重复调用“first_name”(我有 5k 条记录)我的结论是在搜索结果中添加“first_name”所以我不调用关联配置文件?
这是正确的方法吗??? 任何建议都是开放的:)
Person.search(include: [:profile]) do
if params.key?(:q)
fulltext params[:q], fields: fulltext_fields, query_phrase_slop: 0, minimum_match: 2 do
fulltext_fields.each { |field| highlight field, max_snippets: 3, fragment_size: 100 }
end
end
在我的理解中。 我把包括在搜索中,所以太阳黑子包括协会。 我使用子弹宝石。 这就是我出现这个问题的原因。
我认为我的表格呈现搜索结果关联。 不是铁路协会。 随时发表评论。 如果我的解释不正确。 我也是菜鸟谢谢:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.