Solr 分组和唯一值

Solr Grouping and Unique values

我正在尝试寻找一种方法来获取基于组的唯一值。这个想法是按 id 分组,然后 return 对值进行分组。

查询参数 fl=valueIwant+myID&group=true&group.field=myId&q=:

 "grouped": {
     "myID": {
         "matches": 7520236,
         "groups": [{
                 "groupValue": "123456",
                 "doclist": {
                     "numFound": 6583,
                     "start": 0,
                     "docs": [{
                         "myID": 123456,
                         "valueIwant": "Hello World"
                     }]
                 }
             }
         ]
     }
 }

这很好,但我想做的是以一种独特的方式 select 'valueIwant'。 group.limit 将 return 文档中的更多值,但它不会是唯一的。有没有办法将 group.limit 限制为仅 return 个唯一的 fl 值?在上面的例子中找到了 6583。我必须将限制扩展到 6583,然后通过 unique 将其缩小。当我有 700 个唯一的 ID,我想将它们与总共 4400 万个文档分组时,这会变得更加复杂。

例如。如果我这样做

fl=valueIwant+myID&group.limit=3&group=true&group.field=myId&q=:

         "grouped": {
         "myID": {
             "matches": 7520236,
             "groups": [{
                     "groupValue": "123456",
                     "doclist": {
                         "numFound": 6583,
                         "start": 0,
                         "docs": [{
                             "myID": 123456,
                             "valueIwant": "Hello World"
                         },
                         {
                             "myID": 123456,
                             "valueIwant": "Hello World"
                         }
                         {
                             "myID": 123456,
                             "valueIwant": "Hello World123456"
                         }]]
                     }
                 }
             ]
         }
     }

我想要的是文档对 valueIwant 如此独特

     "grouped": {
     "myID": {
         "matches": 7520236,
         "groups": [{
                 "groupValue": "123456",
                 "doclist": {
                     "numFound": 6583,
                     "start": 0,
                     "docs": [{
                         "myID": 123456,
                         "valueIwant": "Hello World"
                     },
                     {
                         "myID": 123456,
                         "valueIwant": "Hello Planet"
                     }
                     {
                         "myID": 123456,
                         "valueIwant": "Hello World123456"
                     }]]
                 }
             }
         ]
     }
 }

有办法吗?我正在查看函数,但找不到我需要的任何东西。

谢谢,

-小贩

我能够使用小平面枢轴来做到这一点。在此之后最困难的事情是解析响应,因为它作为一个嵌套非常深的对象返回。你可以在这里看到我的第一个解决方案 和我关于如何让它变得更好的问题 'dynamic'

facet: true,
  'facet.mincount': 1,
  'facet.sort': 'index',
  'facet.limit': 5,
  'facet.pivot': 'pivotvalue0, pivotvalue1, pivotvalue2, pivotvalue3'