gpt4 book ai didi

c# - NEST 5.x 字段用法

转载 作者:太空狗 更新时间:2023-10-30 01:31:33 26 4
gpt4 key购买 nike

我有两个来自 nest 2.3 的代码片段,我无法在最新的 5.0.0-rc3 中合作。

var titleField = Infer.Field<Page>(p => p.Title, 2);
var metaDescriptionField = Infer.Field<Page>(p => p.MetaDescription, 1.5);
var metaKeywordsField = Infer.Field<Page>(p => p.Keywords, 2);
var bodyField = Infer.Field<Page>(p => p.Body);

MultiMatchQuery multiMatchQuery = new MultiMatchQuery()
{
Fields = new [] {
bodyField,
metaKeywordsField,
metaKeywordsField,
titleField
},
Query = search.Term
};

此处的构建错误是“无法将 Nest.Field[] 隐式转换为 Nest.Fields”。我可以做类似的事情

MultiMatchQuery multiMatchQuery = new MultiMatchQuery()
{
Fields = Infer.Fields<Page>(p => p.Title, p => p.MetaDescription, p => p.Keywords, p => p.Body),
Query = search.Term
};

但后来我失去了字段权重。

我一直遇到麻烦的第二个字段 useagle 是

var searchResponse = client.Search<Page>(s => s
.MatchAll()
.From(from)
.Size(size)
.Fields(f => f.Field(fi => fi.Id).Field(fi => fi.SourceId))
);

此处的构建错误是“Nest.SearchDescriptor”不包含“Fields”的定义,并且找不到接受类型为“Nest.SearchDescriptor”的第一个参数的扩展方法“Fields”(您是否缺少 using 指令或汇编引用?

在这种情况下,我没有运气获得可编译的东西。

最佳答案

Field[] 转换为 Fields 的隐式运算符在最新版本的 5.x 中缺失;除了其他有用的重载之外,我还将添加它以进入下一个版本。同时,您可以使用具有强类型和增强功能的字段构建Fields

Fields fields = ((Fields)Infer.Field<Document>(f => f.Property1, 1.2))
.And<Document>(f => f.Property2, 2)
.And<Document>(f => f.Property3, 5);

你也可以使用字符串

Fields fields = new[]
{
"property1^1.2",
"property2^2",
"property3^5"
};

对于第二部分,SearchRequest 上的 .Fields() 现在是 .StoredFields()in line with the change in Elasticsearch , 表示它仅用于检索存储的字段 ( those set to store:true in the mapping )。如问题中所述,如果您使用 .Fields()_source 字段中检索部分文档,建议您使用 source filtering为此。

关于c# - NEST 5.x 字段用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833903/

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