【发布时间】:2019-03-28 15:23:28
【问题描述】:
根据我在增量索引中的搜索和理解,当我们添加新记录或对记录进行更改时,我们需要重新索引 sphinx 以显示该数据,否则它不会显示。
但我检查数据是否正在更新而没有重新索引。那么重新索引delta的目的是什么
【问题讨论】:
标签: ruby-on-rails sphinx thinking-sphinx delta
根据我在增量索引中的搜索和理解,当我们添加新记录或对记录进行更改时,我们需要重新索引 sphinx 以显示该数据,否则它不会显示。
但我检查数据是否正在更新而没有重新索引。那么重新索引delta的目的是什么
【问题讨论】:
标签: ruby-on-rails sphinx thinking-sphinx delta
在 Thinking Sphinx 中,所有索引都经过重新处理(通过 rake ts:index 和 rake Ts:rebuild)的完整重新索引与处理单个索引之间存在区别。
当您启用了增量索引时,这意味着给定模型的增量索引会在更改记录或添加新记录后立即自动处理。这可以作为标准回调过程的一部分(使用 :delta => true 时)或通过后台工作人员(Sidekiq、DelayedJob 等)完成,如果您正在使用适当的 delta gem。
所有这一切意味着您不需要对所有索引进行完全重新处理以显示更改 - 增量索引会自动重新处理,并且记录的更改会反映在 Sphinx 中。
值得注意的一点是,发生的变化越多,增量索引就越大,因此处理速度就越慢。因此,仍然需要定期(每小时?每天?取决于您的应用程序)进行完整的重新索引,以保持快速的增量处理时间。
【讨论】:
ts:reindex 将处理 all 索引,但不会重新生成配置文件。 ts:index 两者兼而有之。 reindex 任务不再存在,但通过在运行 ts:index 时设置 INDEX_ONLY=true 可以获得相同的行为。