在太阳黑子中重新索引特定模型似乎没有时间差别

lul*_*ala 18 solr sunspot

我的申请通常需要20分钟才能重新整合索引.有一个小桌子,有几条记录,我想再次重新索引.我想节省时间,所以我运行命令 rake sunspot:solr:reindex[500,Deal].这是直接从Github自述文件中获取的,并且假设仅重新索引一个模型.

在此命令中重新索引所需的时间仍为20分钟,因此所用时间没有差异.难道我做错了什么?

fra*_*die 31

我在同样的情况下问你为什么需要同一时间.

解决方案:擦除":solr".写吧:

rake sunspot:reindex[batch_size,Model]
Run Code Online (Sandbox Code Playgroud)

如果你没有指定batch_size,你可以使用逗号",",如:

rake sunspot:reindex[,model]
Run Code Online (Sandbox Code Playgroud)

  • 我不得不引用zshell中的括号`rake sunspot:reindex\[,model \]`. (6认同)

lul*_*ala 26

我现在进入Rails控制台并从那里调用reindex:

Deal.solr_reindex(:batch_size => 1000, :include => :period)
Run Code Online (Sandbox Code Playgroud)

这很好用,因为我现在只能重新索引一个模型,包括相关表来提高速度.以前只有200 /秒的索引,现在是1000 /秒.

(事实上​​,由于通过控制台或rake重新索引将清除索引文件,导致短时间的空索引,我现在solr_index大部分时间都会调用更新索引.)

  • 重建索引的rake任务有些幼稚.这里的瓶颈是对数据库的N + 1查询以查找关联对象,并且在控制台中使用`:include`可以节省大量的开销,否则会在rake任务中产生. (2认同)
  • 此解决方案的一小部分内容:包含的模型需要以小写形式编写,并且取决于它们的单数或复数关系 (2认同)