首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr分组和唯一值

Solr分组和唯一值
EN

Stack Overflow用户
提问于 2020-07-01 15:13:06
回答 1查看 135关注 0票数 0

我正试图找到一种方法,以获取独特的价值观,基于一个群体。其想法是按id进行分组,然后返回该组值。

查询params fl=valueIwant+myID&group=true&group.field=myId&q=

代码语言:javascript
复制
 "grouped": {
     "myID": {
         "matches": 7520236,
         "groups": [{
                 "groupValue": "123456",
                 "doclist": {
                     "numFound": 6583,
                     "start": 0,
                     "docs": [{
                         "myID": 123456,
                         "valueIwant": "Hello World"
                     }]
                 }
             }
         ]
     }
 }

这很好,但是我想要做的是以不同的方式选择'valueIwant‘。group.limit将在文档中返回更多的值,但它不会是唯一的。有办法限制group.limit只返回唯一的fl值吗?在上面的例子中找到6583。我将不得不扩大到6583,然后扩大到独特的限制。当我有700个唯一的i,我想用总共4400万个文档对其进行分组时,这种情况就更加复杂了。

例如。如果我做了

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

代码语言:javascript
复制
         "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中是唯一的,就像这样

代码语言:javascript
复制
     "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"
                     }]]
                 }
             }
         ]
     }
 }

有办法这样做吗?我在看函数,但找不到我需要的东西。

谢谢,

-Peddler

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-21 15:14:52

我可以用小面枢轴来做这个。这之后最困难的事情是解析响应,因为它作为一个非常嵌套的对象返回。您可以在这里看到我的第一个解决方案,Dynamically traversing a deep nested object and accumulating results和我关于使它更“动态”的问题。

代码语言:javascript
复制
facet: true,
  'facet.mincount': 1,
  'facet.sort': 'index',
  'facet.limit': 5,
  'facet.pivot': 'pivotvalue0, pivotvalue1, pivotvalue2, pivotvalue3'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62679939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档