如何在doc中找到具有最高得分方面的5个doc?

时间:2013-12-11 21:53:51

标签: elasticsearch couchbase

我正在使用Couchbase作为Nosql数据库来存储网站的数据。我也使用Elasticsearch作为我的查询工具。我最近遇到了关于方面或分组结果的挑战。假设我的数据库中有7个文档

{
  "id": "1",
  "keywords": "red",
  "owner_id": "a"
}

{
  "id": "2", 
  "keywords": "red",  
  "owner_id": "a"
}

{
  "id": "3",
  "keywords": "red",  
  "owner_id": "a"
}

{
  "id": "4",
  "keywords": "red blue green",  
  "owner_id": "a"
}

{
  "id": "5",
  "keywords": "red blue",  
  "owner_id": "b"
}

{
  "id": "6",
  "keywords": "red blue",  
  "owner_id": "b"
}

{
  "id": "7",
  "keywords": "red blue green yellow",  
  "owner_id": "b"
}

当我在"red"中搜索"keywords"时,我会得到6个结果,每个得分。顺序如下:

1
2
3
5
6
4
7

我想要的是在"red"中搜索"keywords",然后添加facet term "owner_id",facet size 2.它只返回

1
2
5
6

这意味着即使id“3”在匹配"red"方面得分高于“5”和“6”,但由于它达到最大数量的doc可以从“a”类型返回,它不会是返回

我已尝试过facets,但它最后只给了我统计数据,仍然会返回所有文档。我读到了1.00 beta2中的聚合,仍然无法找到解决方法。关于我的任何想法都可以在一个查询中完成所有操作?

0 个答案:

没有答案