通过将 map<struct> 分解为列表并使用 sameElement 进行过滤来对结构进行分组

Group structs by exploding map<struct> into a list and filtering with sameElement

vespa 可以在 <map: string,struct> 上分组,在 struct.k1=x AND struct.k2=y 上加上一个子句,并且只获取匹配结构数量的计数(不是文档!,因为一个文档可能有多个匹配的结构) ?

所以它会使用where struct.k1=x AND struct.k2=y和return一组地图来分解列表中的所有struct

就像您可以使用 sameElement 进行筛选一样,在这种情况下,您列出结构,执行 sameElement 筛选,然后按 struct.k3

进行分组

这有意义吗? 谢谢

编辑:一个例子在 Postgresql 中。 unnest() 可用于 arrayjson_each() 可用于 json 以将它们转换为行 参考:

https://www.postgresql.org/docs/current/functions-array.html

https://www.postgresql.org/docs/11/functions-json.html

Vespa 的分组框架将适用于文档中的所有地图元素,而不仅仅是与 sameElement 查询项匹配的地图元素。类似的,如果你有一个简单的 field foo array<string>{} 分组将对数组中的所有元素进行操作,而不仅仅是与查询匹配的元素。