我在使用Thinking Sphinx和Delayed Delta的应用程序中遇到了一个问题。
它从Rails 3 + TS 2到Rails 4 + TS 3不断更新,从那时起,delta索引无法正常工作。
二手宝石:
深入研究这个问题,我可以看到,在更新我的对象时,过时的对象将从MainActivty.java class
索引中删除,但更新的对象未在SunshineSyncAdapter.initializeSyncAdapter(this);
索引中编入索引。
在修改我的对象之前:
_core
选项进行搜索会返回该对象。_delta
索引(使用:indices
选项)返回对象。_core
索引(使用:indices
选项)不会。修改对象后:
_delta
选项进行搜索不会返回该对象。:indices
索引(使用:indices
选项)不会返回该对象。_core
索引(使用:indices
选项)不会返回该对象。 运行_delta
(从而运行增量索引)
:indices
选项进行搜索会返回该对象。ThinkingSphinx::Deltas::IndexJob.new('object_delta').perform
索引(使用:indices
选项)不会返回该对象。_core
索引(使用:indices
选项)不会。然后我注意到为什么会发生这种情况:只有一个作业被添加到delayed_job队列并执行_delta
。
:indices
中运行修改后的objetcs索引的ThinkingSphinx::Deltas::DelayedDelta::FlagAsDeletedJob
未添加到队列中。
有谁知道为什么这是hapenning以及如何解决这个问题?
更新:索引定义。
我有两个相同模型的索引(这些是本地化索引),并且都启用了delta。
以下是ThinkingSphinx::Deltas::DelayedDelta::DeltaJob
:
_delta
答案 0 :(得分:1)
从查看ts-delayed-delta的源代码,我可以看到没有被安排的DeltaJob的唯一原因是存在没有锁定/失败的重复。我不认为这是这种情况吗?