从今天开始,我一直在使用查询组来进行我正在运行的小测试。
我在查询中定义了2个组,在特定日期时间之前定义了1个过滤器,在日期时间之后定义了另一个过滤器。以下是我的群组设置的一个非常简化的示例。
group do
query "before" do
with(:planned).less_than mydate
end
query "after" do
with(:planned).greater_than mydate
end
end
执行查询后,我遍历我的组,我看到以下结果:
results.group(:queries).groups.each do |g|
group_total = g.total
group_results_count = g.results.count
end
查询before
:
group_total
= 2
group_results_count
= 1
查询after
:
group_total
= 3
group_results_count
= 1
我的小组的结果计数始终为1. 总值实际上是正确的,我已通过Solr管理面板对此进行了双重检查。
我在这里误解了什么,或者群体的工作方式与我的期望不同。
我在Solr 5.3.1上运行
答案 0 :(得分:0)
默认情况下,Solr returns one result for each group - 请参阅group.limit
参数。
According to the source,sunspot中的分组模块使用limit参数:
def to_params
params = {
:group => "true",
:"group.ngroups" => "true",
}
params.merge!(@sort.to_params("group."))
params[:"group.field"] = @fields.map(&:indexed_name) if @fields.any?
params[:"group.query"] = @queries.map(&:to_boolean_phrase) if @queries.any?
params[:"group.limit"] = @limit if @limit
params[:"group.truncate"] = @truncate if @truncate
params
end