gpt4 book ai didi

elasticsearch - 在Nest Elasticsearch中使用术语汇总功能查找特定文档

转载 作者:行者123 更新时间:2023-12-02 22:31:35 25 4
gpt4 key购买 nike

我想在特定文档的内容字段中获得常用术语。
我怎样才能做到这一点?
到目前为止,我已经尝试了下面的代码,但是听起来像对特定的文档ID进行过滤不起作用。

 var result = client.Search<Document>(s => s.Index(defaultIndex).Filter(f => f.Term(t => t.Id, ID)).
Aggregations(a => a.Terms("terms_agg",
sa => sa.Field(p => p.File).Size(20))));
var agg = result.Aggs.Terms("terms_agg");

有人知道是否可以使用“术语汇总”功能来获取特定内容中的流行术语列表?还是在Elasticsearch中还有其他方法可以做到这一点?

最佳答案

您需要为此使用过滤的查询。

var result = client.Search<Document>(s => s
.Index(defaultIndex)
.Query(q => q
.Filtered(fq => fq
.Filter(f => f
.Term(t => t.Id, ID))))
.Aggregations(a => a
.Terms(
"terms_agg",
sa => sa.Field(p => p.File)
.Size(20))));
var agg = result.Aggs.Terms("terms_agg");

这样做的原因是聚合的范围是与顶层“查询”部分匹配的文档。您使用的过滤器是后过滤器。后置过滤器的结果不会影响汇总的文档的范围。在您的请求中,“查询”部分暗含一个“match_all”查询,因此您看到多个文档被汇总。通过在顶级查询部分中强制使用文档过滤器,可以限制聚合的范围。

关于elasticsearch - 在Nest Elasticsearch中使用术语汇总功能查找特定文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35875019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com