我们有一个唯一产品索引,其中每个文档代表一个产品,具有以下字段:product_id,group_id,group_score和product_score。 请考虑以下索引:
NSWindowController
每个组包含〜1-200个产品。 我们正在尝试符合以下条件的查询: 1.产品应按其group_score(desc)排序。 2.每个group_id不超过一种产品。 3.获得该组中product_score最高的产品。
例如,对上述内容应用查询应返回:
{
"product_id": "100-001",
"group_id": "100",
"group_score": 100,
"product_score": 60,
},
{
"product_id": "100-002",
"group_id": "100",
"group_score": 100,
"product_score": 40,
},
{
"product_id": "100-001",
"group_id": "100",
"group_score": 100,
"product_score": 50,
},
{
"product_id": "200-001",
"group_id": "200",
"group_score": 73,
"product_score": 20,
},
{
"product_id": "200-002",
"group_id": "200",
"group_score": 73,
"product_score": 53,
}
我们最终得到以下查询:
{
"product_id": "100-001"
},
{
"product_id": "200-002"
}
问题在于,由于聚合,查询的速度确实很慢,并且搜索性能非常重要。
我们希望听到您对更好/有效解决方案的意见。
更改索引结构是可以容忍的。