思考狮身人面像:单个模型上的多个增量索引

Thinking sphinx: multiple delta indices on single model

当一个模型的索引被分成多个索引时,我有几个关于增量索引的问题。

在这个例子中:

ThinkingSphinx::Index.define :model, name: "index_1", with: :active_record, delta: ThinkingSphinx::Deltas::ResqueDelta do
    indexes :field_a
end

ThinkingSphinx::Index.define :model, name: "index_2", with: :active_record, delta: ThinkingSphinx::Deltas::ResqueDelta do
    indexes :field_b
end

我为每个索引获取了这些文件:

model_index_1_delta
model_index_2_delta
model_index_1_core
model_index_2_core
  1. 如果我在 field_a 上更新记录,model_index_2_delta 也会更新吗?
  2. 如果 field_afield_b 都更新了一条记录:

    一个。重新索引会同时更新 model_index_1_coremodel_index_2_core 吗?

    b。数据库中记录的增量字段什么时候设置为 0?

    c。如果之前的重新索引已经将 delta 字段设置为 0,那么核心文件之一是否会无法正确更新 运行?

  1. 是的,如果您更新 field_a,两个增量都会更新。 Thinking Sphinx 不会尝试弄清楚模型更改是否与特定索引相关。

  2. 一个。这取决于如何处理增量。如果它是默认增量 处理器 (:delta => true),然后在 其他。你正在使用 Resque,所以每个索引的处理可以 确实重叠。不过没关系。

    b。当通过 rake ts:index 任务发生完整索引时,增量标志仅设置为 false/zero,并且仅通过增量处理设置为 true/one。在 rake 任务 运行 之前,它一直设置为 true - 它指示核心中是否存在更改(而不是指示它只需要为增量索引进行处理)。

    c。当 rake ts:index 为 运行 时,核心索引加载 all 数据 - delta 列上没有过滤器。