ruby-on-rails - 用太阳黑子重新索引一个特定的记录

标签 ruby-on-rails search solr sunspot

我有两个模型

class User < ActiveRecord::Base
  has_many :posts

  searchable do
    text :post_titles
  end

  def post_titles
    posts.map &:title
  end
end

class Post < ActiveRecord::Base
  belongs_to :user
end

问题是,当我更新 Post sunspot 的标题时,不会更新相关用户的索引,并且无法通过新数据进行搜索。如果我这样做 User.index它解决了问题,但需要太多时间。是否有更好的解决方案来更新子记录更改时的父记录索引(例如重新索引仅父记录而不是所有用户)?

最佳答案

Sunspot 提供实例 index()方法,用于索引一条记录。

我所做的是

 class Post 

   belongs_to :user
   after_save :update_user_index

 private

   def update_user_index
     user.index
   end
end

如果您在控制台中运行它,并希望立即查看结果,请调用 Sunspot.commit

关于ruby-on-rails - 用太阳黑子重新索引一个特定的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10453022/

相关文章:

javascript - 使用 AngularJS 通过查询数组来创建即时搜索

java - 如何防止 solr 在索引时解码 url?

search - 如何获得 Solr 索引中每种类型的前 X 个结果

apache - 在 Windows 框中使用 tomcat 托管 Solr 5.3

ruby-on-rails - 错误:执行 gem 时 ... (Zlib::GzipFile::Error) 不是 gzip 格式

ruby-on-rails - 在 Rails 上获取状态 : code on ajax response in a . js.erb 文件

JQuery 按字符搜索字符串

ruby-on-rails - mongoid 有没有办法使用整数(数字)作为默认 id 而不是长哈希值?

ruby-on-rails - Rails 中是否共享 Redis 连接?

在 Vim 中搜索和替换多行并转换为小写