gpt4 book ai didi

elasticsearch - Nest-如何在具有多个子句的查询附近编写跨度?

转载 作者:行者123 更新时间:2023-12-02 23:34:17 25 4
gpt4 key购买 nike

我想使用NEST编写查询,如下所述:
https://www.elastic.co/guide/en/elasticsearch/reference/1.7/query-dsl-span-near-query.html

我有一组值用作SpanTerm子句。集合大小因查询而异。

如果集合大小有限,我可以这样做:

var sn = q.SpanNear(snr => snr.Clauses(c => c.SpanTerm(), c => c.SpanTerm(), ...))

我如何动态地执行(未知的子句数)?

最佳答案

您可以使用以下扩展方法:

public static class SpanNearQueryDescriptorExtensions 
{
public static void SpanTermClauses<T>(this SpanNearQueryDescriptor<T> descriptor, Expression<Func<T, object>> field, string[] terms)
where T : class
{
descriptor.Clauses(terms
.Select(t => new Func<SpanQuery<T>, SpanQuery<T>>(query => query.SpanTerm(field, t)))
.ToArray());
}
}

用法:
var terms = new[] {"term1", "term2"};

client.Search<Docuemnt>(s => s
.Query(q => q
.SpanNear(sp => sp
.Slop(12)
.SpanTermClauses(f => f.Title, terms))));

希望能帮助到你。

关于elasticsearch - Nest-如何在具有多个子句的查询附近编写跨度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33380790/

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