受欢迎的博客标签

Elasticsearch on Ubuntu(7) -highlighter-三种可选择的高亮显示for Elasticsearch 7.x on Ubuntu

Published

 三种高亮类型
ES提供了三种高亮类型,unified highlighter, plain highlighter, fvh highlighter(fast vector highlighter)

unified highlighter:默认unified.unified highlighter使用Lucene的统一highlighter。这个突出显示器将文本分成句子,并使用BM25算法对单个句子进行评分.

plain highlighter:一般情况下,用plain highlight也就足够了,不需要做其他额外的设置

fvh highlighter:fast vector highlighter,如果field的值特别大,超过了1M,那么可以用fast vector highlight。

 

fragment_size:举个例子 你一个Field的值,比如有长度是1万,但是你不可能在页面上显示这么。。设置要显示出来的fragment文本判断的长度,默认是100
number_of_fragments:你可能你的高亮的fragment文本片段有多个片段,你可以指定就显示几个片段

Elastic.Clients.Elasticsearch 9.18

 using Elastic.Clients.Elasticsearch.Core.Search;


var highlight3 = new Highlight()
 {
     PreTags = ["<mark>"],
     PostTags = ["</mark>"],
     Encoder = HighlighterEncoder.Html,
     Fields = new Dictionary<Field, HighlightField>
     {
         { new Field("title"), new HighlightField() { PreTags = ["<mark>"], PostTags = ["</mark>"] }},
         { new Field("body"), new HighlightField() { PreTags = ["<mark>"], PostTags = ["</mark>"] }},
     },

 };

 

var searchResponse = await client.SearchAsync<MyDocument>(s => s
    .Query(q => q
        .Match(m => m
            .Field(f => f.Title)
            .Query("elasticsearch")
        )
    )
    .Highlight(h => highlight)
);