我需要能够过滤我的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返回组数;但是,这对我没有帮助,因为我需要在应用“组过滤器”时返回行数。