繁体   English   中英

如何在黑子“search.results”中添加记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM