[英]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.