ts-delayed-delta:从核心删除但不运行delta索引

时间:2016-01-08 14:08:48

标签: ruby-on-rails-4 delayed-job thinking-sphinx

我在使用Thinking Sphinx和Delayed Delta的应用程序中遇到了一个问题。

它从Rails 3 + TS 2到Rails 4 + TS 3不断更新,从那时起,delta索引无法正常工作。

二手宝石:

  • 思考 - 狮身人面像:3.1.4
  • ts-delayed-delta:2.0.2
  • delayed_job:4.1.1

深入研究这个问题,我可以看到,在更新我的对象时,过时的对象将从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

1 个答案:

答案 0 :(得分:1)

从查看ts-delayed-delta的源代码,我可以看到没有被安排的DeltaJob的唯一原因是存在没有锁定/失败的重复。我不认为这是这种情况吗?

https://github.com/pat/ts-delayed-delta/blob/master/lib/thinking_sphinx/deltas/delayed_delta.rb#L25-L27