Ruby 是否:包含在一个太阳黑子/solr可搜索方法中?

Ruby 是否:包含在一个太阳黑子/solr可搜索方法中?,ruby,solr,sunspot,Ruby,Solr,Sunspot,我首先用以下include语句对我的solr索引的2个版本进行了基准测试: searchable(:auto_index => false, :auto_remove => true, :include => { :account => true, :user_practice_contact => [:city], :user_professional_detail => [:specialt

我首先用以下include语句对我的solr索引的2个版本进行了基准测试:

searchable(:auto_index => false, :auto_remove => true,
           :include => { :account => true,
           :user_practice_contact => [:city],
           :user_professional_detail => [:specialty, :subspecialties]}) do
第二点:

searchable(:auto_index => false, :auto_remove => true) do
我原本希望在包含的版本上看到减速带,但结果如下:

版本包括:

Benchmark.measure { User.limit(50).each do |u|; u.index; end; Sunspot.commit; }
   => #<Benchmark::Tms:0x1130b34e8 @real=6.8079788684845, @utime=5.05, @cstime=0.0, @cutime=0.0, @total=5.2, @label="", @stime=0.149999999999999>
Benchmark.measure { User.limit(50).each do |u|; u.index; end; Sunspot.commit; }
 => #<Benchmark::Tms:0x112ef0fe8 @real=6.82465195655823, @utime=4.92, @cstime=0.0, @cutime=0.0, @total=5.07, @label="", @stime=0.15> 
Benchmark.measure{User.limit(50)。每个do | u | u.index;end;Sunspot.commit;}
=> #
除此之外,还包括:

Benchmark.measure { User.limit(50).each do |u|; u.index; end; Sunspot.commit; }
   => #<Benchmark::Tms:0x1130b34e8 @real=6.8079788684845, @utime=5.05, @cstime=0.0, @cutime=0.0, @total=5.2, @label="", @stime=0.149999999999999>
Benchmark.measure { User.limit(50).each do |u|; u.index; end; Sunspot.commit; }
 => #<Benchmark::Tms:0x112ef0fe8 @real=6.82465195655823, @utime=4.92, @cstime=0.0, @cutime=0.0, @total=5.07, @label="", @stime=0.15> 
Benchmark.measure{User.limit(50)。每个do | u | u.index;end;Sunspot.commit;}
=> # 
有人知道这些保险是否有效吗?如果是这样,我做错了吗?
我查看了文档:没有提到这一点。

通过查看Rails日志中的SQL查询,您可以看到
:include
on searchable会导致在索引时快速加载<代码>:includeon
#search
导致搜索时加载过多。

根据,
:include
将:

在索引时允许ActiveRecord加载所需的关联

您的基准测试无法正常工作,因为您正在普通Ruby迭代器中为单个记录编制索引。当你将一条记录索引50次时,太阳黑子将根本无法利用这个急切的加载。相反,你应该:

Sunspot.index( User.limit(50) );
Sunspot.commit
哦,你能测试一下下面的速度是否比上面的快吗?我真的很想知道

Sunspot.index( User.includes(:account).limit(50) );
Sunspot.commit
此外,目前还存在一个问题,即STI模型将忽略
:include