子句说明
聚合子句可以在一定程度上保证展示结果的多样性,以提升用户体验。如一次查询可以查出很多的文档,但是如果某个用户的多个文档分值都比较高,则都排在了前面,导致一页中所展示的结果几乎都属于同一用户,这样既不利于结果展示也不利于用户体验。对此,聚合子句可以对每个用户的文档进行抽取,使得每个用户都有展示文档的机会。
语法说明
子句语法格式为:dist_key:field,dist_count:1,dist_times:1,reserved:false
参数 | 类型 | 必需 | 取值范围 | 默认值 | 描述 |
dist_key | string | 是 | 要聚合的字段 | ||
dist_times | int | 否 | 1 | 抽取的轮数 | |
dist_count | int | 否 | 1 | 一轮抽取的文档数 | |
reserved | true/false | 否 | true/false | true | 是否保留抽取之后剩余的文档。如果为false,为不保留,则搜索结果的total(总匹配结果数)会不准确。 |
update_total_hit | true/false | 否 | true/false | false | 当reserved为false时,设置update_total_hit为true,则最终total_hit会减去被distinct丢弃的的数目(不一定准确),为false则不减。 |
dist_filter | string | 否 | 过滤条件,被过滤的doc不参与distinct,只在后面的排序中,这些被过滤的doc将和被distinct出来的第一组doc一起参与排序。默认是全部参与distinct。 | ||
grade | float | 否 | 指定档位划分阈值,所有的文档将根据档位划分阈值划分成若干档,每个档位中各自根据distinct参数做distinct,可以不指定该参数,默认是所有文档都在同一档。档位的划分按照文档排序时第一维的排序依据的分数进行划分,两个档位阈值之间用 “|” 分开,档位的个数没有限制。例如:1、grade:3.0 :表示根据第一维排序依据的分数分成两档,(< 3.0)的是第一档,(>= 3.0) 的是第二档;2、grade:3.0|5.0 :表示分成三档,(< 3.0)是第一档,(>= 3.0,< 5.0)是第二档,(>= 5.0)是第三档。档位的先后顺序和第一维排序依据的顺序一致,即如果第一维排序依据是降序,则档位也是降序,反之亦然。 |
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。