1
我有遇到麻烦与思维幻灯片延迟增量。这是模型:思考狮身人面像延迟三角洲索引 - 索引没有更新记录删除
Event
has_many :subscriptions
has_many :users, :through => :subscriptions
...
define_index do
indexes name
indexes users(:id), :as => :user_id
set_property :delta => :delayed
...
Subscription
belongs_to :event
belongs_to :user
User
has_many :subscriptions
has_many :events, :through => :subscriptions
当用户添加/删除订阅我通过这样的订阅模式回调三角形标志设置为所有相应的事件:
after_save :set_events_delta_flag
after_destroy :set_events_delta_flag
def set_events_delta_flag
Event.define_indexes
sql = "UPDATE events SET delta = true FROM subscriptions"
sql << " WHERE events.id = subscriptions.event_id AND (subscriptions.id = #{self.id})"
Event.connection.update(sql)
Event.index_delta
end
它工作正常时,用户添加订阅:回调运行,然后运行ThinkingSphinx :: Deltas :: DeltaJob作业并更新索引。然而,当用户删除订阅回调和DeltaJob运行,但似乎该指数没有更新:
如果我做这样的事情:前
Event.search("". :with => {:user_id => XX}).search_count
和删除订阅后,计数没有变化(它在之前和之后改变了订阅)
这是一个预期的行为?我究竟做错了什么?
更新:似乎斯芬克斯storig同一文件的两个副本(一个在核心索引和一个在三角洲索引)是问题的原因。