获取myField分区的前n个结果

时间:2016-01-22 10:56:28

标签: solr filter grouping partition

我需要能够过滤我的solr结果,以便每个FieldA只显示FieldB排序的前n个结果。

示例:

在应用过滤器之前:

+----------+----------+
|  FieldA  |  FieldB  |
+----------+----------+
|    1     |     1    |
|    1     |     2    |
|    1     |     3    |
|    1     |     4    |
|    2     |     1    |
|    2     |     2    |
|    2     |     3    |
|    3     |     1    |
|    3     |     2    |
+----------+----------+

我想过滤,以便每个FieldA只显示基于FieldB最高值的前2个条目:

+----------+----------+
|  FieldA  |  FieldB  |
+----------+----------+
|    1     |     3    |
|    1     |     4    |
|    2     |     2    |
|    2     |     3    |
|    3     |     1    |
|    3     |     2    |
+----------+----------+

查询可能会应用其他过滤器,我希望在应用所有过滤器后应用此分组。

结果分组(https://cwiki.apache.org/confluence/display/solr/Result+Grouping)似乎就是我所需要的。

结果分组的问题是,总结果/构面的返回计数是应用分组之前的结果计数。我需要对应用分组的结果进行计数(基本上我希望分组的行为类似于过滤器)。在研究了这个之后,我发现SOLR目前不支持这个 - 我只能得到结果总数或返回的组数。

我可以使用不同的方法来获得我需要的东西吗? (字段的最高结果+与“顶部过滤器”匹配的结果计数)

稍后编辑:

我为group.format和group.main尝试了不同的组合/值。他们压扁/改变了结果格式。

我试过group.facet = true;方面计数现在基于返回的组;但是,我需要将facet计数基于返回结果的数量(而不是组)

group.ngroups = true返回组数;但是,这对我没有帮助,因为我需要在应用“组过滤器”时返回行数。

0 个答案:

没有答案