销毁记录时处理 ThinkingSphinx 实时索引

Dealing with ThinkingSphinx realtime indices when destroying records

我正在尝试将 ThinkingSphinx 中基于增量的索引转换为实时索引。根据文档,我添加了这个回调:

after_save ThinkingSphinx::RealTime.callback_for(:location)

这对于添加和更新记录来说效果很好,哇。我的问题是删除记录,根据 Rails 文档,这不会触发 after_save 回调。我已通过删除一条记录来确认这一点,该记录并未从我的 sphinx 索引中删除。

我试过了

after_destroy ThinkingSphinx::RealTime.callback_for(:location)

但这会引发错误(因为实时回调不支持 after_destroy)。

使用实时索引时如何从索引中删除条目?

(thinking-sphinx 3.3.0, rails 5.0.4, 如果有帮助的话)

Thinking Sphinx 会自动向所有索引模型添加自己的 after_destroy 回调,因此无需添加任何代码即可从实时索引中删除这些记录。

如果您仍然需要手动执行此操作,例如在软删除对象时。

ThinkingSphinx::ActiveRecord::Callbacks::DeleteCallbacks.after_destroy(instance)

参考:https://github.com/pat/thinking-sphinx/issues/1057