我有一个包含以下文档的数据库:
{_id: "1", module:["m1"]}
{_id: "2", module:["m1", "m2"]}
{_id: "3", module:["m3"]}
使用以下索引函数为这些文档创建搜索索引:
function (doc) {
doc.module && doc.module.forEach &&
doc.module.forEach(function(module){
index("module", module, {"store":true, "facet": true});
});
}
索引使用"关键字"模块字段上的分析器。 样本数据非常小(11个文档,3个不同的模块值)
对于使用 group_field = module 参数的查询,我遇到两个问题:
并非所有群组都会被退回。我得到了3组中的2组。似乎在" m1"中返回了带有[" m1"," m2"]的文档。小组,但没有" m2"组。当我使用counts = [" modules"]时,我会得到不同值的完整列表。 我希望得到类似的东西:
{
"total_rows": 3,
"groups": [
{ "by": "m1",
"total_rows": 1,
"rows": [ {_id: "1", module: "m1"},
{_id: "2", module: "m2"}
]
},
{ "by": "m2",
"total_rows": 1,
"rows": [ {_id: "2", module: "m2"} ]
},
....
]
}
使用group_field时,不会返回书签,因此无法获取组中超过200组或200行的下一个数据块。
< / LI> 醇>答案 0 :(得分:1)
Cloudant Search基于Apache Lucene,因此具有其属性/限制。
分组的一个限制是“组字段必须是单值索引字段”(Lucene Grouping),因此文档只能在一个组中。
分组的另一个限制/属性是需要提前提供topNGroups和maxDocsPerGroup,而在Cloudant情况下,最大数量是200和200(可以使用group_limit
和{{1}将它们设置得更低参数)。