[英]how do i add dynamic highlight fields in nest for elasticsearch?
我希望能够动态添加字段,以便在使用巢的elasticsearch中突出显示。 目前看来,它无法以任何方式进行迭代。
我已经尝试在.OnFields函数内进行迭代以生成.OnField函数的列表,但是它说这是不可迭代的。
在此示例中,我想动态添加“艺术家”和“标题”,并根据用户输入添加/删除其他人。 这可能吗?
s.Highlight(h => h
.OnFields(f => f
.OnField("artist")
.OnField("title")
.PreTags("<em>")
.PostTags("</em>")
));
高亮显示一个Action<HighlightFieldDescriptor<T>>
数组。 您只传递了一个Action<HighlightFieldDescriptor<T>>
并对其多次调用OnField,这将继续替换最后一个值。
应该是这样的:
s.Highlight(h => h
.OnFields(
f => f.OnField("artist").PreTags("<em>").PostTags("</em>"),
f => f.OnField("title").PreTags("<em>").PostTags("</em>")
));
根据后续文章中的代码,这是使用LINQ的解决方案:
s.Highlight(h => h
.OnFields(
SearchFields(searchDescriptor.SearchModifier).Select(x => new Action<HighlightFieldDescriptor>(f => f.OnField(x))).ToArray()
));
我意识到我已经混淆了两种类型:
HighlightFieldDescriptor和HighlightDescriptor。 抱歉。 这是我的实现(所以我可以标记为已回答)
s.Highlight(h => h
.OnFields(f =>
GetFieldsHighligthDescriptor(searchDescriptor, f)
)
);
private void GetFieldsHighligthDescriptor(SearchQueryDescriptor searchDescriptor, HighlightFieldDescriptor<Product> f)
{
foreach (var b in SearchFields(searchDescriptor.SearchModifier))
{
f.OnField(b);
}
}
编辑
实际上,这是行不通的,因为它只返回了SearchFields数组中的最后一个条目...回到了绘图板上?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.