思考狮身人面像:单个模型上的多个增量索引
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
- 如果我在
field_a
上更新记录,model_index_2_delta
也会更新吗?
如果 field_a
和 field_b
都更新了一条记录:
一个。重新索引会同时更新 model_index_1_core
和 model_index_2_core
吗?
b。数据库中记录的增量字段什么时候设置为 0?
c。如果之前的重新索引已经将 delta 字段设置为 0,那么核心文件之一是否会无法正确更新 运行?
是的,如果您更新 field_a,两个增量都会更新。 Thinking Sphinx 不会尝试弄清楚模型更改是否与特定索引相关。
一个。这取决于如何处理增量。如果它是默认增量
处理器 (:delta => true
),然后在
其他。你正在使用 Resque,所以每个索引的处理可以
确实重叠。不过没关系。
b。当通过 rake ts:index
任务发生完整索引时,增量标志仅设置为 false/zero,并且仅通过增量处理设置为 true/one。在 rake 任务 运行 之前,它一直设置为 true - 它指示核心中是否存在更改(而不是指示它只需要为增量索引进行处理)。
c。当 rake ts:index
为 运行 时,核心索引加载 all 数据 - delta 列上没有过滤器。
当一个模型的索引被分成多个索引时,我有几个关于增量索引的问题。
在这个例子中:
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
- 如果我在
field_a
上更新记录,model_index_2_delta
也会更新吗? 如果
field_a
和field_b
都更新了一条记录:一个。重新索引会同时更新
model_index_1_core
和model_index_2_core
吗?b。数据库中记录的增量字段什么时候设置为 0?
c。如果之前的重新索引已经将 delta 字段设置为 0,那么核心文件之一是否会无法正确更新 运行?
是的,如果您更新 field_a,两个增量都会更新。 Thinking Sphinx 不会尝试弄清楚模型更改是否与特定索引相关。
一个。这取决于如何处理增量。如果它是默认增量 处理器 (
:delta => true
),然后在 其他。你正在使用 Resque,所以每个索引的处理可以 确实重叠。不过没关系。b。当通过
rake ts:index
任务发生完整索引时,增量标志仅设置为 false/zero,并且仅通过增量处理设置为 true/one。在 rake 任务 运行 之前,它一直设置为 true - 它指示核心中是否存在更改(而不是指示它只需要为增量索引进行处理)。c。当
rake ts:index
为 运行 时,核心索引加载 all 数据 - delta 列上没有过滤器。