簡體   English   中英

如何在巢中為Elasticsearch添加動態突出顯示字段?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM