【发布时间】:2020-07-01 15:13:06
【问题描述】:
我正在尝试找到一种方法来获取基于组的唯一值。想法是按 id 分组,然后返回该分组值。
查询参数 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"
}]
}
}
]
}
}
这很好,但我想做的是以不同的方式选择“valueIwant”。 group.limit 将在文档中返回更多值,但它不会是唯一的。有没有办法限制 group.limit 只返回唯一的 fl 值?对于上述示例,找到了 6583。我必须将限制扩大到 6583,然后通过独特的方式将其缩小。当我有 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"
}]]
}
}
]
}
}
有没有办法做到这一点?我正在查看函数,但找不到我需要的任何东西。
谢谢,
-小贩
【问题讨论】:
-
你能用多层次分面解决这个问题吗?这会给你
123456: {"Hello world": .., "Hello World123456": ..., "Hello Planet": ...}并且没有重复。 -
是的,我想我通过 facet.pivot 功能获得了它。确定后我会发布我的解决方案